Function at 0x404650
Capabilities:
Encrypt data using speck
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x52c
mov eax, dword [0x45d6cc]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [0x45c028]
mov dword [0x46085c], eax
mov eax, dword [0x460b94]
mov dword [0x460854], 1
test eax, eax
je 0x404690
dec eax
mov dword [0x460b94], 0
mov dword [0x460b98], eax
push 0xff
call fcn.00409060
add esp, 4
test eax, eax
jne 0x407211
call fcn.00402130
movsx eax, al
mov dword [ebp - 0x508], eax
test eax, eax
je 0x407211
push ebx
push esi
mov ebx, 1
push edi
lea eax, [ebp - 0x52c]
push eax
call fcn.00401510
mov eax, dword [ebp - 0x508]
add esp, 4
mov esi, dword [0x4605f8]
dec esi
mov dword [ebp - 0x50c], esi
mov cl, byte [eax + 0x45c0d0]
test cl, 2
je 0x4048a4
cmp dword [0x460b98], 0
jne 0x40720e
push 0xa
push eax
xor edi, edi
call fcn.00401540
add esp, 8
test eax, eax
js 0x404732
lea ecx, [edi + edi*4]
lea edi, [eax + ecx*2]
call fcn.00402150
push 0xa
push eax
mov dword [ebp - 0x508], eax
call fcn.00401540
add esp, 8
test eax, eax
jns 0x404712
cmp dword [ebp - 0x508], 0x24
jne 0x404749
call fcn.00402150
cmp eax, 0x3a
je 0x4047f2
cmp dword [0x45f858], 0
je 0x4047ed
lea eax, [ebp - 0x52c]
mov dword [0x4605f8], esi
push 0
push eax
call fcn.004015c0
mov eax, dword [0x45f858]
add esp, 8
dec eax
cmp eax, 3
ja case.default.0x404778
jmp dword [eax*4 + 0x407220]
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.0040abe0
jmp 0x4047bd
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.0040ac20
jmp 0x4047bd
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.0040ab60
jmp 0x4047bd
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.0040aba0
add esp, 8
push 0
call fcn.004020f0
add esp, 4
test eax, eax
jne 0x4067e3
pop edi
pop esi
mov dword [0x460854], 4
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
call fcn.0040b660
mov eax, dword [0x460820]
mov esi, dword [eax + 4]
test esi, esi
je 0x40480f
nop
cmp edi, dword [esi + 4]
je 0x404895
mov esi, dword [esi]
test esi, esi
jne 0x404800
push 0x14
call fcn.0040b970
mov ecx, dword [0x45c020]
mov esi, eax
add esp, 4
mov dword [esi + 0xc], ecx
mov ecx, dword [0x45c028]
mov dword [esi + 0x10], ecx
mov ecx, dword [0x460820]
mov ecx, dword [ecx + 4]
mov dword [esi], ecx
mov dword [esi + 4], edi
mov dword [esi + 8], 0
mov eax, dword [0x460820]
mov dword [eax + 4], esi
test byte [esi + 8], 8
je 0x40485a
push 0x6d
call fcn.0040b600
add esp, 4
push dword [esi + 0x10]
push dword [esi + 0xc]
call fcn.004083e0
mov eax, dword [esi + 0x10]
add esp, 8
sub eax, dword [0x45c028]
mov dword [0x460858], eax
mov eax, dword [0x45c020]
mov dword [esi + 0xc], eax
mov eax, dword [0x45c028]
mov dword [esi + 0x10], eax
mov dword [0x460854], 2
jmp 0x4067e3
cmp dword [0x4608c8], 0
jne 0x40484a
or dword [esi + 8], 8
jmp 0x40484a
test cl, 1
jne 0x4048c1
cmp dword [0x460b98], 0
jne 0x40720e
call fcn.0040b660
mov eax, dword [ebp - 0x508]
push eax
lea eax, [ebp - 0x104]
push eax
call fcn.004021f0
lea eax, [ebp - 0x104]
push eax
call fcn.0040b920
add esp, 0xc
test eax, eax
je 0x4048f6
cmp byte [eax + 8], 0x1b
jne 0x4048f6
push str.Invalid_Use_Of_A_Predefined_Constant
push 0x71
call fcn.0040b680
add esp, 8
mov eax, dword [0x4605f8]
mov dword [ebp - 0x510], eax
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x3a
jne 0x404a03
cmp dword [0x460b98], 0
jne 0x40720e
call fcn.00402150
mov dword [ebp - 0x508], eax
cmp eax, 0x3a
je 0x404945
push eax
call fcn.00402ed0
add esp, 4
mov dword [ebp - 0x508], 0
lea eax, [ebp - 0x104]
push eax
call fcn.0040b880
add esp, 4
mov dword [0x460820], eax
cmp eax, 0x45c010
jne 0x40496a
call fcn.0040b660
mov eax, dword [0x460820]
cmp dword [0x4608c8], 0
jne 0x40498c
cmp byte [eax + 0xc], 0
je 0x40498c
mov cl, byte [eax + 0xd]
test cl, 4
jne 0x40498c
or cl, 8
mov byte [eax + 0xd], cl
mov eax, dword [0x460820]
test byte [eax + 0xd], 8
je 0x4049a1
push 0x6d
call fcn.0040b600
mov eax, dword [0x460820]
add esp, 4
mov byte [eax + 0xc], 1
mov eax, dword [0x460820]
push dword [eax + 0x18]
push dword [eax + 0x10]
call fcn.004083e0
mov ecx, dword [0x460820]
add esp, 8
mov eax, dword [ecx + 0x18]
sub eax, dword [0x45c028]
mov dword [0x460858], eax
mov eax, dword [0x45c020]
mov dword [ecx + 0x10], eax
mov ecx, dword [0x460820]
mov eax, dword [0x45c028]
mov dword [ecx + 0x18], eax
cmp dword [ebp - 0x508], 0
je 0x4049f4
mov eax, dword [0x460820]
or byte [eax + 0xd], 2
mov dword [0x460854], 2
jmp 0x4067e3
cmp eax, 0x3d
jne 0x404a51
cmp dword [0x460b98], 0
jne 0x40720e
call fcn.00402150
mov dword [ebp - 0x508], eax
cmp eax, 0x3a
je 0x404a46
cmp eax, 0x3d
je 0x404a3b
push eax
xor esi, esi
call fcn.00402ed0
add esp, 4
push esi
jmp 0x404add
mov esi, 1
push esi
jmp 0x404add
mov esi, 2
push esi
jmp 0x404add
push eax
call fcn.00402ed0
lea eax, [ebp - 0x104]
push eax
call fcn.0040b920
add esp, 8
test eax, eax
jne 0x404b04
lea eax, [ebp - 0x104]
push eax
call fcn.00409a60
add esp, 4
test eax, eax
jne 0x404b04
cmp dword [0x460b98], eax
jne 0x40720e
mov esi, dword [0x4605f8]
call fcn.00402440
test eax, eax
je 0x404afe
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp byte [eax + 0x45c0d0], 1
jne 0x404afe
push eax
lea eax, [ebp - 0x304]
push eax
call fcn.004021f0
lea eax, [ebp - 0x304]
push eax
call fcn.0040b920
add esp, 0xc
test eax, eax
je 0x404af8
cmp byte [eax + 8], 0xe
jne 0x404af8
push dword [eax + 0xc]
lea eax, [ebp - 0x52c]
push eax
lea eax, [ebp - 0x104]
push eax
call fcn.004074c0
add esp, 0xc
jmp 0x4067e3
mov dword [0x4605f8], esi
mov esi, dword [ebp - 0x50c]
cmp dword [0x460b98], 0
mov eax, 4
cmovne eax, ebx
mov dword [0x460854], eax
lea eax, [ebp - 0x104]
push eax
call fcn.0040b920
mov edi, eax
lea eax, [ebp - 0x104]
push eax
mov dword [ebp - 0x51c], edi
call fcn.00409a60
add esp, 8
mov ebx, eax
test edi, edi
jne 0x404be1
test ebx, ebx
jne 0x404bd9
cmp dword [0x45f858], eax
je 0x40680a
push eax
lea eax, [ebp - 0x52c]
mov dword [0x4605f8], esi
push eax
call fcn.004015c0
mov eax, dword [0x45f858]
add esp, 8
dec eax
cmp eax, 3
ja case.default.0x404b7a
jmp dword [eax*4 + 0x407230]
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.0040abe0
jmp 0x404bbf
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.0040ac20
jmp 0x404bbf
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.0040ab60
jmp 0x404bbf
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.0040aba0
add esp, 8
push 0
call fcn.004020f0
add esp, 4
test eax, eax
je 0x4047d2
jmp 0x4067de
or ecx, 0xffffffff
jmp case.0x404bfa.3
movsx esi, byte [edi + 8]
mov ecx, esi
lea eax, [esi - 2]
cmp eax, 0x18
ja case.0x404bfa.3
movzx eax, byte [eax + 0x407254]
jmp dword [eax*4 + 0x407240]
mov eax, dword [edi + 0xc]
cmp eax, 0x14
jb 0x40694a
cmp eax, 0x28
jae 0x404e93
cmp eax, 0x14
jne 0x404c81
mov eax, dword [str..iif]
mov esi, dword [0x4605f8]
mov dword [ebp - 0x104], eax
mov al, byte [0x45042c]
mov byte [ebp - 0x100], al
call fcn.004023d0
push eax
lea eax, [ebp - 0x100]
push eax
call fcn.004021f0
call fcn.00402eb0
lea eax, [ebp - 0x104]
push eax
call fcn.0040b920
add esp, 0xc
test eax, eax
je 0x404c7b
cmp byte [eax + 8], 0xc
jne 0x404c7b
cmp dword [eax + 0xc], 0x14
je 0x404c7b
push 0
mov edi, eax
call fcn.004020f0
add esp, 4
jmp 0x404c81
mov dword [0x4605f8], esi
mov ecx, dword [edi + 0xc]
lea eax, [ecx - 0x15]
cmp eax, 2
ja 0x404d04
mov ecx, dword [0x460b90]
test ecx, ecx
je 0x406832
cmp dword [ecx*4 + 0x460b20], 0
mov eax, dword [0x460b98]
jne case.0x404d3f.30
inc eax
cmp dword [ecx*4 + 0x460b60], 0
mov dword [0x460b94], eax
mov eax, dword [edi + 0xc]
je 0x404cf8
sub eax, 0x16
je 0x404d00
sub eax, 1
je 0x404d00
mov eax, 1
mov dword [0x460b98], eax
xor ebx, ebx
test eax, eax
sete bl
push 0
call fcn.004020f0
add esp, 4
mov dword [0x460854], 1
test ebx, ebx
je 0x40720e
jmp 0x4067de
sub eax, 0x16
je 0x404cc6
sub eax, 1
xor eax, eax
jmp 0x404ccb
cmp dword [0x460b98], 0
jne 0x40720e
lea eax, [ecx - 0x14]
cmp eax, 0xf
ja case.0x404d24.21
movzx eax, byte [eax + 0x407284]
jmp dword [eax*4 + 0x407270]
call fcn.00401250
mov ecx, dword [edi + 0xc]
add ecx, 0xffffffe6
cmp ecx, 4
ja case.default.0x404d3f
jmp dword [ecx*4 + 0x407294]
xor ebx, ebx
test eax, eax
setg bl
jmp 0x404cd7
xor ebx, ebx
test eax, eax
sets bl
jmp 0x404cd7
xor ebx, ebx
test eax, eax
setns bl
jmp 0x404cd7
xor ebx, ebx
test eax, eax
setle bl
jmp 0x404cd7
push 0
call fcn.004020f0
xor ebx, ebx
add esp, 4
test eax, eax
sete bl
mov dword [ebp - 0x50c], ebx
test eax, eax
jne 0x404db4
lea eax, [ebp - 0x104]
push eax
call fcn.004089e0
xor eax, eax
cmp byte [ebp - 0x104], al
push eax
cmove ebx, eax
mov dword [ebp - 0x50c], ebx
call fcn.004020f0
add esp, 8
xor ebx, 1
cmp dword [edi + 0xc], 0x21
cmove ebx, dword [ebp - 0x50c]
jmp 0x404cd7
lea eax, [ebp - 0x104]
push 0xffffffffffffffff
push eax
call fcn.004021f0
lea eax, [ebp - 0x104]
push eax
call fcn.0040b7f0
add esp, 0xc
test eax, eax
je 0x404e01
cmp dword [eax + 0xc], 0
je 0x404e01
xor ecx, ecx
mov ebx, 1
cmp dword [edi + 0xc], 0x19
cmove ebx, ecx
jmp 0x404cd7
lea eax, [ebp - 0x104]
push eax
call fcn.0040ba00
add esp, 4
xor ebx, ebx
test eax, eax
je 0x404e31
mov al, byte [eax + 0xc]
cmp al, 1
sete bl
xor ecx, ecx
cmp al, 1
setne cl
cmp dword [edi + 0xc], 0x19
cmove ebx, ecx
jmp 0x404cd7
cmp dword [edi + 0xc], 0x19
mov ecx, 1
cmove ebx, ecx
jmp 0x404cd7
lea eax, [ebp - 0x104]
push eax
call fcn.004089e0
push 0
call fcn.004020f0
lea eax, [ebp - 0x304]
push eax
call fcn.004089e0
push dword [0x460878]
lea eax, [ebp - 0x304]
push eax
lea eax, [ebp - 0x104]
push eax
call fcn.0040bad0
add esp, 0x18
cmp dword [edi + 0xc], 0x23
je case.0x404d3f.30
xor ebx, ebx
test eax, eax
setne bl
jmp 0x404cd7
sub eax, 0x28
je 0x4068bd
sub eax, 1
je 0x406881
call fcn.0040b660
mov ecx, esi
cmp dword [0x460b98], 0
jne 0x40720e
dec ecx
cmp ecx, 0x18
ja case.0x404ec3.2
jmp dword [ecx*4 + 0x4072a8]
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x28
jne 0x404fad
nop
lea eax, [ebp - 0x104]
push 0xffffffffffffffff
push eax
call fcn.004021f0
push 1
lea eax, [ebp - 0x104]
push 0x451170
push eax
call fcn.0040bad0
add esp, 0x14
test eax, eax
je 0x404f13
movsx eax, byte [edi + 9]
mov dword [0x45f854], eax
jmp 0x404f39
mov eax, dword [0x45f664]
test eax, eax
je 0x404f2f
push dword [edi + 0xc]
lea ecx, [ebp - 0x104]
push ecx
call eax
add esp, 8
test eax, eax
jne 0x404f39
push 0x75
call fcn.0040b600
add esp, 4
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x2c
je 0x404ee0
cmp eax, 0x29
je 0x404fad
call fcn.0040b660
mov dword [0x460854], 1
jmp 0x4067de
mov eax, dword [edi + 0xc]
sub eax, 0
je 0x404fbc
sub eax, 1
jne 0x4067de
mov esi, 0x45f7a0
call fcn.004023d0
mov dword [ebp - 0x508], eax
test eax, eax
je 0x404fa1
cmp esi, 0x45f7ef
jae 0x404f92
mov byte [esi], al
inc esi
call fcn.00402150
mov dword [ebp - 0x508], eax
test eax, eax
jne 0x404f87
push eax
mov byte [esi], 0
call fcn.00402ed0
add esp, 4
mov dword [0x460854], 1
jmp 0x4067de
mov esi, 0x45f800
call fcn.004023d0
mov dword [ebp - 0x508], eax
test eax, eax
je 0x404fa1
cmp esi, 0x45f84f
jae 0x404fdb
mov byte [esi], al
inc esi
call fcn.00402150
mov dword [ebp - 0x508], eax
test eax, eax
jne 0x404fd0
jmp 0x404fa1
lea eax, [ebp - 0x104]
push 0xffffffffffffffff
push eax
call fcn.004023e0
add esp, 8
lea eax, [ebp - 0x104]
cmp byte [0x45f680], 0
je 0x405057
mov ecx, 0x45f680
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x405031
test dl, dl
je 0x40502d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x405031
add eax, 2
add ecx, 2
test dl, dl
jne 0x405011
xor eax, eax
jmp 0x405036
sbb eax, eax
or eax, 1
test eax, eax
je 0x404fad
push 0x6d
call fcn.0040b600
add esp, 4
mov dword [0x460854], 1
jmp 0x4067de
push pe_nt_image_headers32
push eax
push 0x45f680
call fcn.0042bab0
add esp, 0xc
mov dword [0x460854], 1
jmp 0x4067de
mov eax, dword [edi + 0xc]
sub eax, 0
je 0x4051ff
sub eax, 1
je 0x40509e
push str.Internal____PST.C_Error.
push 0x69
call fcn.0040b680
add esp, 8
jmp 0x4067de
push dword [0x460a00]
lea eax, [ebp - 0x504]
push 0x460a20
push eax
call fcn.0042bab0
mov eax, 0x200
sub eax, dword [0x460a00]
push eax
lea eax, [ebp - 0x504]
add eax, dword [0x460a00]
push eax
call fcn.004021a0
mov eax, dword [0x460a00]
lea ecx, [ebp - 0x504]
add eax, ecx
push eax
call fcn.00407730
add esp, 0x18
test eax, eax
je 0x4050fb
mov eax, dword [0x460a00]
lea eax, [ebp + eax - 0x504]
jmp 0x405101
lea eax, [ebp - 0x504]
push 8
push 0x45045a
push eax
call fcn.00404360
xor ebx, ebx
push ebx
call fcn.004020f0
add esp, 0x10
call fcn.00402440
test eax, eax
je 0x405136
push ebx
call fcn.004020f0
add esp, 4
test eax, eax
jne 0x405136
call fcn.00401250
mov ebx, eax
push 0
or esi, 0xffffffff
call fcn.004020f0
add esp, 4
call fcn.00402440
test eax, eax
je 0x405153
call fcn.00401250
mov esi, eax
push 0x451178
push 0x460900
call fcn.0042b287
mov edi, eax
add esp, 8
test edi, edi
jne 0x40517f
push str.File_not_found.
push 0x69
call fcn.0040b680
add esp, 8
jmp 0x4067de
push 0
push ebx
push edi
call fcn.0042b9b8
push edi
push 1
lea eax, [ebp - 0x508]
push 1
push eax
call fcn.0042b51d
add esp, 0x1c
cmp eax, 1
je 0x4051b5
push str.Offset_past_End_Of_File.
push 0x69
call fcn.0040b680
add esp, 8
jmp 0x4067de
push 0
push ebx
push edi
call fcn.0042b9b8
add esp, 0xc
test esi, esi
je 0x4051f1
push edi
push 1
lea eax, [ebp - 0x508]
push 1
push eax
call fcn.0042b51d
add esp, 0x10
cmp eax, 1
jne 0x4051f1
push dword [ebp - 0x508]
call fcn.0040a040
add esp, 4
sub esi, 1
jne 0x4051c5
push edi
call fcn.00429fef
add esp, 4
jmp 0x4067de
mov ecx, dword [0x460ba8]
inc ecx
mov dword [0x460854], 1
mov dword [0x460ba8], ecx
cmp ecx, 6
jle 0x405232
lea eax, [ecx - 1]
push 0x69
mov dword [0x460ba8], eax
call fcn.0040b600
add esp, 4
jmp 0x4067de
mov eax, dword [0x460ba4]
cmp ecx, eax
push dword [0x460a00]
cmovg eax, ecx
mov dword [0x460ba4], eax
lea eax, [ebp - 0x504]
push 0x460a20
push eax
call fcn.0042bab0
mov eax, 0x200
sub eax, dword [0x460a00]
push eax
lea eax, [ebp - 0x504]
add eax, dword [0x460a00]
push eax
call fcn.004021a0
mov eax, dword [0x460a00]
lea ecx, [ebp - 0x504]
add eax, ecx
push eax
call fcn.00407730
add esp, 0x18
test eax, eax
je 0x40529e
mov eax, dword [0x460a00]
lea eax, [ebp + eax - 0x504]
jmp 0x4052a4
lea eax, [ebp - 0x504]
push 8
push 0x45045a
push eax
call fcn.00404360
push 0x451174
push 0x460900
call fcn.0042b287
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x4052de
dec dword [0x460ba8]
push 0x69
call fcn.0040b600
add esp, 4
jmp 0x4067de
push 0x120
call fcn.0040b970
mov ecx, dword [0x460e88]
add esp, 4
mov dword [0x460e7c], eax
mov dword [eax], ecx
mov eax, dword [0x460e7c]
mov dword [eax + 4], 2
mov ecx, dword [0x460e7c]
mov eax, dword [0x4608f4]
mov dword [ecx + 8], eax
mov ecx, dword [0x460e7c]
mov eax, dword [0x460b98]
mov dword [ecx + 0xc], eax
mov ecx, dword [0x460e7c]
mov eax, dword [0x460b90]
mov dword [ecx + 0x10], eax
mov ecx, dword [0x460e7c]
mov eax, dword [0x460b8c]
mov dword [ecx + 0x14], eax
mov eax, dword [0x460e7c]
mov dword [eax + 0x18], esi
mov ecx, dword [0x460e7c]
mov eax, dword [0x4608f8]
mov dword [ecx + 0x1c], eax
mov ecx, 0x460900
mov edx, dword [0x460e7c]
add edx, 0x20
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx], al
lea edx, [edx + 1]
test al, al
jne 0x405360
test byte [0x460b8c], 0x80
mov ebx, 1
je 0x4067e3
mov dword [0x4608d8], 0x3c
jmp 0x4067e3
mov eax, dword [edi + 0xc]
cmp eax, 2
jne 0x4053d8
mov eax, dword [0x460c00]
test eax, eax
jne 0x4053b4
push str.Area_Stack_Is_Empty
push 0x71
call fcn.0040b680
mov eax, dword [0x460c00]
add esp, 8
push dword [eax*4 + 0x460bbc]
dec eax
mov dword [0x460c00], eax
call fcn.004082e0
add esp, 4
mov dword [0x460854], 1
jmp 0x4067de
cmp eax, 1
jne 0x40541f
mov ecx, dword [0x460c00]
cmp ecx, 0x10
jl 0x4053fd
push str.Area_Stack_Is_Full
push 0x71
call fcn.0040b680
mov ecx, dword [0x460c00]
add esp, 8
mov eax, dword [0x45c020]
mov dword [ecx*4 + 0x460bc0], eax
inc ecx
mov dword [0x460c00], ecx
mov dword [0x460854], 1
jmp 0x4067de
lea eax, [ebp - 0x104]
push 0xffffffffffffffff
push eax
call fcn.004021f0
xor esi, esi
add esp, 8
mov dword [ebp - 0x510], esi
xor edi, edi
mov dword [ebp - 0x51c], esi
mov dword [ebp - 0x518], esi
mov dword [ebp - 0x50c], esi
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x28
jne 0x405688
lea eax, [ebp - 0x204]
push 0xffffffffffffffff
push eax
call fcn.004021f0
push 1
lea eax, [ebp - 0x204]
push str.BANK
push eax
call fcn.0040bad0
add esp, 0x14
test eax, eax
je 0x4054f3
or esi, 0x8080
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x3d
je 0x4054a3
call fcn.0040b660
call fcn.00402440
test eax, eax
jne 0x4054b1
call fcn.0040b660
lea eax, [ebp - 0x204]
push 0xffffffffffffffff
push eax
call fcn.004021f0
lea eax, [ebp - 0x204]
push eax
call fcn.0040b7b0
mov ebx, eax
add esp, 0xc
mov dword [ebp - 0x50c], ebx
test ebx, ebx
jne 0x405668
push 0x75
call fcn.0040b600
add esp, 4
and esi, 0xffff7f7f
jmp 0x405668
push 1
lea eax, [ebp - 0x204]
push 0x4511f4
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x405522
or esi, 0x400
mov dword [ebp - 0x510], 0x400
jmp 0x405668
push 1
lea eax, [ebp - 0x204]
push 0x4511f8
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x405551
or esi, 0x404
mov dword [ebp - 0x510], 0x404
jmp 0x405668
push 1
lea eax, [ebp - 0x204]
push 0x4511fc
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x405580
or esi, 0x800
mov dword [ebp - 0x51c], 0x800
jmp 0x405668
push 1
lea eax, [ebp - 0x204]
push 0x451200
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x4055af
or esi, 0x808
mov dword [ebp - 0x51c], 0x808
jmp 0x405668
push 1
lea eax, [ebp - 0x204]
push str.NOPAG
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x4055de
or esi, 0x1000
mov dword [ebp - 0x518], 0x1000
jmp 0x405668
push 1
lea eax, [ebp - 0x204]
push 0x45120c
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x40560a
or esi, 0x1010
mov dword [ebp - 0x518], 0x1010
jmp 0x405668
push 1
lea eax, [ebp - 0x204]
push str.CSEG
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x405634
mov edi, dword [0x45c528]
and edi, 0x4003
or esi, edi
jmp 0x405668
push 1
lea eax, [ebp - 0x204]
push str.DSEG
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x40565e
mov edi, dword [0x45c54c]
and edi, 0x4043
or esi, edi
jmp 0x405668
push 0x75
call fcn.0040b600
add esp, 4
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x2c
je 0x405460
cmp eax, 0x29
je 0x405691
call fcn.0040b660
jmp 0x405691
push eax
call fcn.00402ed0
add esp, 4
lea eax, [ebp - 0x104]
push eax
call fcn.0040b730
mov ecx, esi
mov ebx, eax
and ecx, 0x8080
add esp, 4
mov dword [ebp - 0x514], ecx
test ebx, ebx
je 0x4057f9
mov eax, dword [ebx + 0x18]
mov dword [ebp - 0x514], eax
test ecx, ecx
je 0x4056f4
mov ecx, dword [ebp - 0x50c]
test eax, 0x8080
je 0x4056e3
cmp ecx, dword [ebx + 4]
je 0x4056f4
push 0x6d
call fcn.0040b600
add esp, 4
jmp 0x4056ee
or eax, 0x8080
mov dword [ebx + 4], ecx
mov dword [ebx + 0x18], eax
mov eax, dword [ebp - 0x514]
test esi, 0x404
je 0x405723
mov ecx, eax
and ecx, 0x404
je 0x40571a
cmp dword [ebp - 0x510], ecx
je 0x405723
push 0x6d
call fcn.0040b600
add esp, 4
jmp 0x405723
mov eax, dword [ebp - 0x510]
or dword [ebx + 0x18], eax
mov ecx, dword [ebp - 0x514]
test esi, 0x808
je 0x40575e
mov edx, ecx
and edx, 0x808
je 0x405755
cmp dword [ebp - 0x51c], edx
je 0x40575e
push 0x6d
call fcn.0040b600
mov ecx, dword [ebp - 0x514]
add esp, 4
jmp 0x40575e
mov eax, dword [ebp - 0x51c]
or dword [ebx + 0x18], eax
test esi, 0x1010
je 0x40578b
and ecx, 0x1010
je 0x405782
cmp dword [ebp - 0x518], ecx
je 0x40578b
push 0x6d
call fcn.0040b600
add esp, 4
jmp 0x40578b
mov eax, dword [ebp - 0x518]
or dword [ebx + 0x18], eax
test esi, 0x4040
je 0x405870
mov eax, dword [ebp - 0x514]
and eax, 0x4040
je 0x4057d4
and edi, 0x4040
cmp edi, eax
je 0x405870
push 0x6d
call fcn.0040b600
add esp, 4
push ebx
call fcn.004082e0
add esp, 4
mov dword [0x460854], 1
jmp 0x4067de
mov eax, dword [ebx + 0x18]
and eax, 0xffffbfbc
or eax, edi
push ebx
mov dword [ebx + 0x18], eax
call fcn.004082e0
add esp, 4
mov dword [0x460854], 1
jmp 0x4067de
push 0x24
call fcn.0040b970
mov ebx, eax
mov eax, dword [0x45c008]
mov dword [ebx], eax
xor eax, eax
cmp dword [ebp - 0x514], eax
cmovne eax, dword [ebp - 0x50c]
mov dword [ebx + 4], eax
lea eax, [ebp - 0x104]
push eax
call fcn.0040ba50
mov dword [ebx + 8], eax
add esp, 8
mov eax, dword [0x45c008]
mov eax, dword [eax + 0xc]
inc eax
mov dword [ebx + 0x10], 0
mov dword [ebx + 0xc], eax
mov dword [ebx + 0x14], 0
mov dword [ebx + 0x1c], 0
mov dword [ebx + 0x20], 0
test esi, 0x4040
jne 0x405867
mov eax, dword [0x45c528]
and eax, 3
or esi, eax
mov dword [ebx + 0x18], esi
mov dword [0x45c008], ebx
push ebx
call fcn.004082e0
add esp, 4
mov dword [0x460854], 1
jmp 0x4067de
lea eax, [ebp - 0x104]
push 0xffffffffffffffff
push eax
call fcn.004021f0
add esp, 8
xor ebx, ebx
xor edi, edi
mov dword [ebp - 0x510], ebx
mov dword [ebp - 0x514], ebx
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x28
jne 0x405a1a
nop dword [eax]
lea eax, [ebp - 0x204]
push 0xffffffffffffffff
push eax
call fcn.004021f0
push 1
lea eax, [ebp - 0x204]
push str.BASE
push eax
call fcn.0040bad0
add esp, 0x14
test eax, eax
je 0x40590c
or ebx, 1
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x3d
je 0x405900
call fcn.0040b660
call fcn.00401250
mov edi, eax
jmp 0x4059fa
push 1
lea eax, [ebp - 0x204]
push str.SIZE
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x40594e
or ebx, 2
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x3d
je 0x40593e
call fcn.0040b660
call fcn.00401250
mov dword [ebp - 0x510], eax
jmp 0x4059fa
push 1
lea eax, [ebp - 0x204]
push str.FSFX
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x4059b1
or ebx, 4
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x3d
je 0x405980
call fcn.0040b660
call fcn.004023d0
mov dword [ebp - 0x508], eax
test byte [eax + 0x45c0d0], 3
jne 0x40599f
call fcn.0040b660
mov eax, dword [ebp - 0x508]
push eax
lea eax, [ebp - 0x304]
push eax
call fcn.004021f0
add esp, 8
jmp 0x4059fa
push 1
lea eax, [ebp - 0x204]
push 0x451238
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x4059f0
or ebx, 8
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x3d
je 0x4059e3
call fcn.0040b660
call fcn.00401250
mov dword [ebp - 0x514], eax
jmp 0x4059fa
push 0x75
call fcn.0040b600
add esp, 4
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x2c
je 0x4058c0
cmp eax, 0x29
je 0x405a23
call fcn.0040b660
jmp 0x405a23
push eax
call fcn.00402ed0
add esp, 4
lea eax, [ebp - 0x104]
push eax
call fcn.0040b7b0
mov esi, eax
add esp, 4
test esi, esi
je 0x405b0d
mov eax, dword [esi + 0x1c]
mov dword [ebp - 0x50c], eax
test bl, 1
je 0x405a6e
test al, 1
je 0x405a5f
cmp edi, dword [esi + 0x10]
je 0x405a6e
push 0x6d
call fcn.0040b600
add esp, 4
jmp 0x405a68
or eax, 1
mov dword [esi + 0x10], edi
mov dword [esi + 0x1c], eax
mov eax, dword [ebp - 0x50c]
test bl, 2
je 0x405a95
mov ecx, dword [ebp - 0x510]
test al, 2
je 0x405a8e
cmp ecx, dword [esi + 0x14]
je 0x405a95
push 0x6d
call fcn.0040b600
add esp, 4
jmp 0x405a95
or dword [esi + 0x1c], 2
mov dword [esi + 0x14], ecx
test bl, 4
je 0x405ad7
test byte [ebp - 0x50c], 4
lea eax, [ebp - 0x304]
je 0x405ac7
push 1
push dword [esi + 8]
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
jne 0x405ad7
push 0x6d
call fcn.0040b600
add esp, 4
jmp 0x405ad7
push eax
call fcn.0040ba50
add esp, 4
mov dword [esi + 8], eax
or dword [esi + 0x1c], 4
test bl, 8
je 0x404fad
test byte [ebp - 0x50c], 8
mov ecx, dword [ebp - 0x514]
je 0x405af7
cmp ecx, dword [esi + 0x18]
jmp 0x405038
or dword [esi + 0x1c], 8
mov dword [esi + 0x18], ecx
mov dword [0x460854], 1
jmp 0x4067de
push 0x20
call fcn.0040b970
mov ecx, dword [0x45c00c]
mov esi, eax
lea eax, [ebp - 0x104]
push eax
mov dword [esi], ecx
call fcn.0040ba50
add esp, 8
mov dword [esi + 4], eax
test bl, 4
je 0x405b46
lea eax, [ebp - 0x304]
push eax
call fcn.0040ba50
add esp, 4
jmp 0x405b48
xor eax, eax
mov dword [esi + 8], eax
mov eax, dword [0x45c00c]
mov eax, dword [eax + 0xc]
inc eax
mov dword [esi + 0x1c], ebx
mov dword [esi + 0xc], eax
test bl, 1
mov eax, 0
cmovne eax, edi
test bl, 2
mov dword [esi + 0x10], eax
mov eax, 0
cmovne eax, dword [ebp - 0x510]
test bl, 8
mov dword [esi + 0x14], eax
mov eax, 0
cmovne eax, dword [ebp - 0x514]
mov dword [esi + 0x18], eax
mov dword [0x45c00c], esi
mov dword [0x460854], 1
jmp 0x4067de
mov eax, dword [0x45c020]
mov eax, dword [eax + 0x18]
and eax, 0x808
cmp eax, 0x808
jne 0x405bdd
call fcn.0040a060
call fcn.00401250
mov dword [0x45c028], eax
mov dword [0x46085c], eax
call fcn.0040a060
mov dword [0x460854], 2
jmp 0x4067de
push 0x6f
call fcn.0040b600
add esp, 4
call fcn.0040a060
mov dword [0x460854], 2
jmp 0x4067de
call fcn.00402440
test eax, eax
je case.0x405c26.100
call fcn.004023d0
and eax, 0x7f
movsx eax, byte [eax + 0x45c150]
add eax, 0xffffffc0
cmp eax, 0x38
ja case.0x405c26.65
movzx eax, byte [eax + 0x407320]
jmp dword [eax*4 + 0x40730c]
mov dword [0x4608e4], 2
mov dword [0x460854], 1
jmp 0x4067de
mov dword [0x4608e4], 8
mov dword [0x460854], 1
jmp 0x4067de
mov dword [0x4608e4], 0x10
mov dword [0x460854], 1
jmp 0x4067de
push dword [ebp - 0x508]
call fcn.00402ed0
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.004015c0
lea eax, [ebp - 0x52c]
push eax
call fcn.004016f0
add esp, 0x10
test eax, eax
je 0x405cd2
mov eax, dword [ebp - 0x528]
cmp eax, 2
je 0x405cbe
cmp eax, 8
je 0x405cbe
cmp eax, 0xa
je 0x405cbe
cmp eax, 0x10
jne 0x405cd2
mov dword [0x4608e4], eax
mov dword [0x460854], 1
jmp 0x4067de
mov dword [0x4608e4], 0xa
call fcn.0040b660
mov dword [0x460854], 1
jmp 0x4067de
mov dword [0x4608e4], 0xa
mov dword [0x460854], 1
jmp 0x4067de
lea eax, [ebp - 0x104]
push 0xffffffffffffffff
push eax
call fcn.004021f0
lea eax, [ebp - 0x104]
push eax
call fcn.0040b880
push 0
mov cl, byte [eax + 0xd]
and cl, 0xfe
or cl, 2
mov byte [eax + 0xd], cl
call fcn.004020f0
add esp, 0x10
test eax, eax
jne case.0x404ec3.10
mov dword [0x460854], 1
jmp 0x4067de
lea eax, [ebp - 0x104]
push 0xffffffffffffffff
push eax
call fcn.004021f0
lea eax, [ebp - 0x104]
push eax
call fcn.0040b880
push 0
mov cl, byte [eax + 0xd]
and cl, 0xfd
or cl, 1
mov byte [eax + 0xd], cl
call fcn.004020f0
add esp, 0x10
test eax, eax
jne case.0x404ec3.11
mov dword [0x460854], 1
jmp 0x4067de
lea eax, [ebp - 0x104]
push 0xffffffffffffffff
push eax
call fcn.004021f0
push 1
call fcn.004020f0
push dword [edi + 0xc]
lea eax, [ebp - 0x52c]
push eax
lea eax, [ebp - 0x104]
push eax
call fcn.004074c0
add esp, 0x18
jmp 0x4067de
mov esi, dword [edi + 0xc]
cmp dword [0x460874], esi
jae 0x405dde
push 0x6f
call fcn.0040b600
add esp, 4
mov eax, dword [0x45c020]
mov ebx, dword [eax + 0x18]
and ebx, 3
inc ebx
call fcn.00402440
test eax, eax
jne 0x405e37
push eax
sub esi, 2
je 0x405e2a
sub esi, 1
je 0x405e1d
sub esi, 1
je 0x405e10
call fcn.0040a040
add esp, 4
jmp 0x4067de
call fcn.0040a020
add esp, 4
jmp 0x4067de
call fcn.0040a000
add esp, 4
jmp 0x4067de
call fcn.0040a310
add esp, 4
jmp 0x4067de
cmp ebx, 1
je 0x406020
cmp ebx, esi
je 0x406020
cmp esi, 1
jne 0x405f90
xor edi, edi
xor esi, esi
nop word [eax + eax]
lea eax, [ebp - 0x52c]
mov dword [ebp - 0x50c], esi
push eax
call fcn.00401510
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.004015c0
add esp, 0xc
test byte [ebp - 0x520], 0xc
je 0x405e96
push 0x6f
call fcn.0040b600
add esp, 4
lea eax, [ebp - 0x52c]
push eax
call fcn.004016f0
add esp, 4
test eax, eax
jne 0x405eb3
push 0x72
call fcn.0040b600
add esp, 4
cmp dword [0x45c088], 0
movzx esi, byte [ebp - 0x528]
je 0x405ed5
inc edi
mov ecx, ebx
sub ecx, edi
shl ecx, 3
shl esi, cl
or esi, dword [ebp - 0x50c]
jmp 0x405ee5
lea ecx, [edi*8]
shl esi, cl
or esi, dword [ebp - 0x50c]
inc edi
xor edx, edx
mov dword [ebp - 0x510], esi
mov eax, edi
mov dword [ebp - 0x50c], edi
div ebx
test edx, edx
jne 0x405f3a
mov eax, ebx
push esi
sub eax, 2
je 0x405f22
sub eax, 1
je 0x405f1b
sub eax, 1
je 0x405f14
call fcn.0040a040
jmp 0x405f27
call fcn.0040a020
jmp 0x405f27
call fcn.0040a000
jmp 0x405f27
call fcn.0040a310
xor edi, edi
add esp, 4
mov dword [ebp - 0x510], edi
xor esi, esi
mov dword [ebp - 0x50c], edi
push 0
call fcn.004020f0
add esp, 4
test eax, eax
jne 0x405e60
cmp dword [ebp - 0x50c], eax
je 0x4067de
push dword [ebp - 0x510]
sub ebx, 2
je 0x405e2a
sub ebx, 1
je 0x405e1d
sub ebx, 1
je 0x405e10
call fcn.0040a040
add esp, 4
jmp 0x4067de
lea eax, [ebp - 0x52c]
push eax
call fcn.00401510
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.004015c0
add esp, 0xc
test byte [ebp - 0x520], 0xc
je 0x405fc0
push 0x6f
call fcn.0040b600
add esp, 4
mov eax, ebx
push 0
sub eax, 2
je 0x405ff6
sub eax, 1
je 0x405fe8
sub eax, 1
lea eax, [ebp - 0x52c]
push eax
je 0x405fe1
call fcn.0040abe0
jmp 0x406002
call fcn.0040aba0
jmp 0x406002
lea eax, [ebp - 0x52c]
push eax
call fcn.0040ab60
jmp 0x406002
lea eax, [ebp - 0x52c]
push eax
call fcn.0040ac20
add esp, 8
push 0
call fcn.004020f0
add esp, 4
test eax, eax
jne 0x405f90
jmp 0x4067de
lea eax, [ebp - 0x52c]
push eax
call fcn.00401510
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.004015c0
add esp, 0xc
test byte [ebp - 0x520], 0xc
je 0x406055
cmp esi, 1
je 0x406066
push 0x6f
call fcn.0040b600
add esp, 4
mov eax, esi
sub eax, 2
je 0x406096
sub eax, 1
je 0x406086
sub eax, 1
je 0x406076
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.0040abe0
jmp 0x4060a4
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.0040aba0
jmp 0x4060a4
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.0040ab60
jmp 0x4060a4
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.0040ac20
add esp, 8
push 0
call fcn.004020f0
add esp, 4
test eax, eax
jne 0x406020
jmp 0x4067de
mov eax, dword [0x460874]
cmp eax, dword [edi + 0xc]
jae 0x4060d2
push 0x6f
call fcn.0040b600
add esp, 4
lea eax, [ebp - 0x52c]
push eax
call fcn.00401510
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.004015c0
push 0x3e8
push 0x3e8
call fcn.0040a500
mov ecx, dword [0x45c020]
xor edx, edx
mov eax, dword [edi + 0xc]
add esp, 0x14
imul eax, dword [ebp - 0x528]
mov ecx, dword [ecx + 0x18]
and ecx, 3
mov dword [0x460854], 3
inc ecx
div ecx
xor ecx, ecx
test edx, edx
setne cl
add ecx, eax
add dword [0x45c028], ecx
jmp 0x4067de
mov eax, dword [0x45c020]
xor ebx, ebx
mov dword [ebp - 0x514], 0
mov dword [ebp - 0x518], ebx
mov esi, dword [eax + 0x18]
and esi, 3
inc esi
mov dword [ebp - 0x510], esi
call fcn.00402440
test eax, eax
je 0x406329
call fcn.00402170
mov edi, eax
cmp edi, 0x28
jne 0x406248
mov edi, dword [0x4605f8]
lea esi, [eax - 0x27]
dec edi
call fcn.004023d0
cmp eax, 0x28
mov dword [ebp - 0x508], eax
lea ecx, [esi + 1]
cmovne ecx, esi
cmp eax, 0x29
lea esi, [ecx - 1]
cmovne esi, ecx
test esi, esi
jne 0x406182
mov esi, dword [0x4605f8]
movsx eax, byte [esi]
mov dword [ebp - 0x508], eax
lea eax, [ebp - 0x52c]
mov byte [esi], 0
push eax
mov dword [0x4605f8], edi
call fcn.00401510
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.004015c0
mov al, byte [ebp - 0x508]
mov byte [esi], al
lea eax, [ebp - 0x52c]
push eax
mov dword [0x4605f8], esi
call fcn.00401220
mov edi, dword [ebp - 0x51c]
add esp, 0x10
mov eax, dword [ebp - 0x528]
mov dword [ebp - 0x508], eax
cmp dword [edi + 0xc], 1
jne 0x406225
call fcn.00402440
test eax, eax
mov eax, dword [ebp - 0x508]
jne 0x406224
or eax, 0x80
mov dword [ebp - 0x508], eax
inc ebx
mov esi, dword [ebp - 0x510]
lea ecx, [ebp - 0x514]
push ecx
lea ecx, [ebp - 0x518]
push ecx
push eax
push esi
call fcn.00408320
add esp, 0x10
jmp 0x40631c
mov eax, dword [ebp - 0x51c]
mov eax, dword [eax + 0xc]
sub eax, 0
je 0x406264
sub eax, 1
je 0x4062ad
sub eax, 1
jne 0x406316
push edi
call fcn.004022a0
add esp, 4
mov dword [ebp - 0x508], eax
test eax, eax
js 0x406316
nop dword [eax + eax]
lea ecx, [ebp - 0x514]
push ecx
lea ecx, [ebp - 0x518]
push ecx
push eax
push esi
call fcn.00408320
push edi
call fcn.004022a0
add esp, 0x14
mov dword [ebp - 0x508], eax
test eax, eax
jns 0x406280
jmp 0x406316
push edi
call fcn.004022a0
mov esi, eax
add esp, 4
mov dword [ebp - 0x508], esi
test esi, esi
jle 0x406310
and esi, 0x7f
push edi
mov dword [ebp - 0x508], esi
call fcn.004022a0
mov esi, eax
add esp, 4
test esi, esi
jns 0x4062e3
call fcn.00402440
test eax, eax
je 0x40634c
lea eax, [ebp - 0x514]
inc ebx
push eax
lea eax, [ebp - 0x518]
push eax
push dword [ebp - 0x508]
push dword [ebp - 0x510]
call fcn.00408320
add esp, 0x10
mov dword [ebp - 0x508], esi
test esi, esi
jns 0x4062c2
mov esi, dword [ebp - 0x510]
mov edi, dword [ebp - 0x51c]
call fcn.00402440
test eax, eax
jne 0x406168
mov eax, dword [edi + 0xc]
sub eax, 1
je 0x406383
sub eax, 1
jne 0x4063a3
lea eax, [ebp - 0x514]
push eax
lea eax, [ebp - 0x518]
push eax
push 0
jmp 0x40639a
mov eax, dword [ebp - 0x508]
lea ecx, [ebp - 0x514]
push ecx
lea ecx, [ebp - 0x518]
or eax, 0x80
push ecx
push eax
push dword [ebp - 0x510]
mov dword [ebp - 0x508], eax
call fcn.00408320
add esp, 0x10
mov dword [ebp - 0x508], esi
inc ebx
jmp 0x406310
test ebx, ebx
jne 0x4063a3
lea eax, [ebp - 0x514]
push eax
lea eax, [ebp - 0x518]
push eax
push 0x80
push esi
call fcn.00408320
add esp, 0x10
cmp dword [ebp - 0x514], 0
je 0x4067de
push dword [ebp - 0x518]
sub esi, 2
jne 0x405df9
call fcn.0040a310
add esp, 4
jmp 0x4067de
lea eax, [ebp - 0x104]
push 0xffffffffffffffff
push eax
call fcn.004021f0
mov eax, dword [edi + 0xc]
add esp, 8
sub eax, 0
je 0x40641b
sub eax, 1
jne 0x404fad
lea eax, [ebp - 0x104]
push eax
call fcn.0040b7f0
add esp, 4
test eax, eax
je 0x404fad
mov dword [eax + 0xc], 0
mov dword [0x460854], 1
jmp 0x4067de
push 0
call fcn.004020f0
add esp, 4
mov byte [ebp - 0x204], 0
call fcn.00402440
test eax, eax
je 0x406449
lea eax, [ebp - 0x204]
push pe_nt_image_headers32
push eax
call fcn.004021a0
add esp, 8
lea eax, [ebp - 0x104]
push eax
call fcn.0040b7f0
mov esi, eax
add esp, 4
test esi, esi
je 0x4064b1
push dword [0x460878]
lea eax, [ebp - 0x204]
push dword [esi + 8]
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
jne 0x40649b
cmp dword [esi + 0xc], eax
je 0x406489
push 0x6d
call fcn.0040b600
add esp, 4
lea eax, [ebp - 0x204]
push eax
call fcn.0040ba50
add esp, 4
mov dword [esi + 8], eax
mov dword [esi + 0xc], 1
mov dword [0x460854], 1
jmp 0x4067de
push 0x10
call fcn.0040b970
mov ecx, dword [0x45e160]
mov esi, eax
lea eax, [ebp - 0x104]
push eax
mov dword [esi], ecx
call fcn.0040ba50
mov dword [esi + 4], eax
lea eax, [ebp - 0x204]
push eax
call fcn.0040ba50
mov dword [esi + 8], eax
add esp, 0xc
mov dword [esi + 0xc], 1
mov dword [0x45e160], esi
mov dword [0x460854], 1
jmp 0x4067de
mov eax, dword [edi + 0xc]
sub eax, 0
je 0x406593
sub eax, 1
je 0x406563
sub eax, 1
jne 0x4067de
call fcn.00401250
mov esi, dword [0x45c028]
mov edi, eax
xor edx, edx
mov eax, esi
div edi
test edx, edx
je 0x40653c
mov ecx, edi
sub ecx, edx
add esi, ecx
mov dword [0x45c028], esi
push edi
call fcn.004073a0
add esp, 4
call fcn.0040a060
mov eax, dword [0x45c028]
mov dword [0x46085c], eax
mov dword [0x460854], 2
jmp 0x4067de
push 1
call fcn.004073a0
add esp, 4
call fcn.0040a060
mov eax, dword [0x45c028]
or eax, 1
mov dword [0x460854], 2
mov dword [0x45c028], eax
mov dword [0x46085c], eax
jmp 0x4067de
push 0
call fcn.004073a0
add esp, 4
call fcn.0040a060
mov eax, dword [0x45c028]
inc eax
mov dword [0x460854], 2
and eax, 0xfffffffe
mov dword [0x45c028], eax
mov dword [0x46085c], eax
jmp 0x4067de
lea eax, [ebp - 0x504]
mov dword [0x460854], 1
push 0x200
push eax
call fcn.004021a0
add esp, 8
cmp dword [0x4608c8], 2
jne 0x4067de
lea eax, [ebp - 0x504]
push eax
push 0x4505c8
call fcn.00408410
add esp, 8
jmp 0x4067de
lea eax, [ebp - 0x52c]
push eax
call fcn.00401510
add esp, 4
call fcn.00402440
test eax, eax
je 0x406631
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.004015c0
add esp, 8
mov eax, dword [ebp - 0x528]
test eax, eax
je 0x40664b
push 0x65
call fcn.0040b600
mov eax, dword [ebp - 0x528]
add esp, 4
mov dword [0x460854], 5
mov dword [0x460850], 0
mov dword [0x46085c], eax
jmp 0x4067de
mov ecx, dword [edi + 0xc]
lea eax, [ecx - 1]
cmp eax, 1
ja 0x4066b7
xor eax, eax
cmp ecx, 2
sete al
cmp dword [0x4608c8], 0
mov dword [ebp - 0x508], eax
je 0x4066a3
cmp dword [0x45c088], eax
je 0x4066a3
push 0x6d
call fcn.0040b600
mov eax, dword [ebp - 0x508]
add esp, 4
mov dword [0x45c088], eax
mov dword [0x460854], 1
jmp 0x4067de
lea eax, [ebp - 0x52c]
push eax
call fcn.00401510
lea eax, [ebp - 0x52c]
push 0
push eax
call fcn.004015c0
lea eax, [ebp - 0x52c]
push eax
call fcn.004016f0
add esp, 0x10
test eax, eax
jne 0x4066ee
push 0x6f
call fcn.0040b600
add esp, 4
mov eax, dword [ebp - 0x528]
cmp eax, dword [0x460874]
jb 0x406715
push 0x6f
call fcn.0040b600
add esp, 4
mov dword [0x460854], 1
jmp 0x4067de
mov dword [0x460860], eax
mov dword [0x460854], 1
jmp 0x4067de
mov dword [0x460854], 1
call fcn.00402440
test eax, eax
je 0x4067de
push str..__.END.
call fcn.0040b880
add esp, 4
cmp byte [eax + 0xc], 0
je 0x406763
test byte [eax + 0xd], 4
jne 0x406763
push 0x6d
call fcn.0040b600
add esp, 4
push 1
lea eax, [ebp - 0x52c]
push eax
push str..__.END.
call fcn.004074c0
add esp, 0xc
jmp 0x4067de
test ebx, ebx
je 0x40679c
mov eax, dword [ebp - 0x510]
push ebx
mov dword [0x4605f8], eax
call fcn.00408a70
mov dword [0x460854], 1
jmp 0x4067a2
push edi
call fcn.0040be90
mov eax, dword [0x460e88]
add esp, 4
cmp dword [eax + 4], 1
jne 0x4067de
cmp dword [0x4608ac], 0
je 0x4067c7
cmp dword [0x4608c8], 1
jne 0x4067c7
call fcn.004010c0
cmp dword [0x46087c], 0
je 0x4067de
cmp dword [0x4608c8], 1
jne 0x4067de
call fcn.00401130
mov ebx, 1
call fcn.00402130
movsx eax, al
mov dword [ebp - 0x508], eax
test eax, eax
jne 0x4046c3
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
cmp dword [0x460b98], 0
jne 0x40720e
push 0x6f
call fcn.0040b600
add esp, 4
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
push 0x69
call fcn.0040b600
add esp, 4
mov dword [0x460854], 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
call fcn.0040b660
push 0
call fcn.004020f0
add esp, 4
mov dword [0x460854], 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x460b90]
test ecx, ecx
je 0x406925
mov eax, dword [ecx*4 + 0x460b20]
dec ecx
pop edi
pop esi
mov dword [0x460b98], eax
mov dword [0x460b90], ecx
mov dword [0x460854], 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
mov eax, dword [0x460b90]
test eax, eax
je 0x406925
mov edi, dword [eax*4 + 0x460b60]
test edi, edi
je 0x4068dd
mov esi, dword [eax*4 + 0x460b20]
lea edx, [esi + 1]
jmp 0x4068e6
mov edx, dword [eax*4 + 0x460b20]
mov esi, edx
xor ecx, ecx
test edi, edi
sete cl
mov dword [eax*4 + 0x460b60], ecx
mov dword [0x460b98], edx
test esi, esi
jne 0x40692f
pop edi
mov dword [0x460850], esi
pop esi
mov dword [0x460854], 5
mov dword [0x46085c], ecx
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
push 0x69
call fcn.0040b600
add esp, 4
pop edi
pop esi
mov dword [0x460854], 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
test eax, eax
jne 0x40699e
mov esi, dword [0x4605f8]
mov dword [ebp - 0x104], 0x66692e
call fcn.004023d0
push eax
lea eax, [ebp - 0x101]
push eax
call fcn.004021f0
lea eax, [ebp - 0x104]
push eax
call fcn.0040b920
add esp, 0xc
test eax, eax
je 0x406998
cmp byte [eax + 8], 0xc
jne 0x406998
cmp dword [eax + 0xc], 0
je 0x406998
mov edi, eax
call fcn.00402eb0
jmp 0x40699e
mov dword [0x4605f8], esi
cmp dword [0x460b98], 0
je 0x4069ae
xor ebx, ebx
jmp 0x406b45
mov eax, dword [edi + 0xc]
cmp eax, 0xf
ja case.default.0x4069c1
movzx eax, byte [eax + 0x407370]
jmp dword [eax*4 + 0x40735c]
call fcn.00401250
mov ecx, dword [edi + 0xc]
add ecx, 0xfffffffa
cmp ecx, 4
ja case.default.0x4069d8
jmp dword [ecx*4 + 0x407380]
xor ebx, ebx
test eax, eax
sete bl
jmp 0x406b45
xor ebx, ebx
test eax, eax
setg bl
jmp 0x406b45
xor ebx, ebx
test eax, eax
sets bl
jmp 0x406b45
xor ebx, ebx
test eax, eax
setns bl
jmp 0x406b45
xor ebx, ebx
test eax, eax
setle bl
jmp 0x406b45
xor ebx, ebx
test eax, eax
setne bl
jmp 0x406b45
push 0
call fcn.004020f0
xor ebx, ebx
add esp, 4
test eax, eax
sete bl
mov dword [ebp - 0x50c], ebx
test eax, eax
jne 0x406a68
lea eax, [ebp - 0x104]
push eax
call fcn.004089e0
xor eax, eax
cmp byte [ebp - 0x104], al
push eax
cmove ebx, eax
mov dword [ebp - 0x50c], ebx
call fcn.004020f0
add esp, 8
xor ebx, 1
cmp dword [edi + 0xc], 0xd
cmove ebx, dword [ebp - 0x50c]
jmp 0x406b45
lea eax, [ebp - 0x104]
push 0xffffffffffffffff
push eax
call fcn.004021f0
lea eax, [ebp - 0x104]
push eax
call fcn.0040b7f0
add esp, 0xc
test eax, eax
je 0x406ab5
cmp dword [eax + 0xc], 0
je 0x406ab5
xor ecx, ecx
mov ebx, 1
cmp dword [edi + 0xc], 5
cmove ebx, ecx
jmp 0x406b45
lea eax, [ebp - 0x104]
push eax
call fcn.0040ba00
add esp, 4
xor ebx, ebx
test eax, eax
je 0x406ae2
mov al, byte [eax + 0xc]
cmp al, 1
sete bl
xor ecx, ecx
cmp al, 1
setne cl
cmp dword [edi + 0xc], 5
cmove ebx, ecx
jmp 0x406b45
cmp dword [edi + 0xc], 5
mov ecx, 1
cmove ebx, ecx
jmp 0x406b45
lea eax, [ebp - 0x104]
push eax
call fcn.004089e0
push 0
call fcn.004020f0
lea eax, [ebp - 0x304]
push eax
call fcn.004089e0
push dword [0x460878]
lea eax, [ebp - 0x304]
push eax
lea eax, [ebp - 0x104]
push eax
call fcn.0040bad0
add esp, 0x18
xor ebx, ebx
cmp dword [edi + 0xc], 0xf
je 0x4069e1
test eax, eax
setne bl
jmp 0x406b45
xor ebx, ebx
call fcn.0040b660
mov ecx, dword [edi + 0xc]
lea eax, [ecx - 1]
cmp eax, 2
ja 0x406bdd
mov eax, dword [0x460b90]
test eax, eax
je 0x406832
cmp dword [eax*4 + 0x460b20], 0
jne 0x40692f
cmp dword [eax*4 + 0x460b60], 0
je 0x406b8e
sub ecx, 2
je 0x406b96
sub ecx, 1
jne 0x406ba7
mov dword [0x460b98], ecx
lea eax, [ecx + 1]
jmp 0x406bb3
sub ecx, 2
je 0x406ba7
sub ecx, 1
mov dword [0x460b98], 0
mov eax, 1
jmp 0x406bb3
xor eax, eax
mov dword [0x460b98], 1
pop edi
pop esi
mov dword [0x460854], 5
mov dword [0x460850], 0
mov dword [0x46085c], eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x460b90]
cmp ecx, 0xa
jge 0x406c0e
mov eax, dword [0x460b98]
inc ecx
mov dword [0x460b90], ecx
mov dword [ecx*4 + 0x460b60], ebx
mov dword [ecx*4 + 0x460b20], eax
test ebx, ebx
jne 0x406c1e
inc dword [0x460b98]
jmp 0x406c1e
push 0x69
call fcn.0040b600
mov ecx, dword [0x460b90]
add esp, 4
cmp dword [ecx*4 + 0x460b20], 0
jne 0x40692f
pop edi
pop esi
mov dword [0x46085c], ebx
mov dword [0x460854], 5
mov dword [0x460850], 0
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
mov dword [0x460854], 0
xor esi, esi
call fcn.00402130
movsx eax, al
mov dword [ebp - 0x508], eax
test eax, eax
je 0x406efc
nop dword [eax]
cmp eax, 0x2c
jne 0x406c90
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x28
jne 0x406ebc
nop dword [eax]
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x21
jne 0x406cbb
or esi, 0x2000
jmp 0x406e99
push eax
call fcn.00402ed0
lea eax, [ebp - 0x104]
push 0xffffffffffffffff
push eax
call fcn.004021f0
push 1
lea eax, [ebp - 0x104]
push 0x45112c
push eax
call fcn.0040bad0
add esp, 0x18
test eax, eax
je 0x406cf1
or esi, 1
jmp 0x406e99
push 1
lea eax, [ebp - 0x104]
push 0x451130
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x406d13
or esi, 2
jmp 0x406e99
push 1
lea eax, [ebp - 0x104]
push 0x451134
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x406d35
or esi, 4
jmp 0x406e99
push 1
lea eax, [ebp - 0x104]
push 0x451138
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x406d57
or esi, 8
jmp 0x406e99
push 1
lea eax, [ebp - 0x104]
push 0x45113c
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x406d79
or esi, 0x10
jmp 0x406e99
push 1
lea eax, [ebp - 0x104]
push 0x451140
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x406d9b
or esi, 0x20
jmp 0x406e99
push 1
lea eax, [ebp - 0x104]
push 0x451144
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x406dbd
or esi, 0x40
jmp 0x406e99
push 1
lea eax, [ebp - 0x104]
push 0x451148
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x406de2
or esi, 0x80
jmp 0x406e99
push 1
lea eax, [ebp - 0x104]
push 0x450e48
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x406e07
or esi, 0x100
jmp 0x406e99
push 1
lea eax, [ebp - 0x104]
push 0x45114c
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x406e29
or esi, 0x200
jmp 0x406e99
push 1
lea eax, [ebp - 0x104]
push 0x451150
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x406e4b
or esi, 0x400
jmp 0x406e99
push 1
lea eax, [ebp - 0x104]
push 0x451154
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x406e6d
or esi, 0x800
jmp 0x406e99
push 1
lea eax, [ebp - 0x104]
push 0x451158
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x406e8f
or esi, 0x1000
jmp 0x406e99
push 0x75
call fcn.0040b600
add esp, 4
call fcn.00402130
movsx eax, al
mov dword [ebp - 0x508], eax
cmp eax, 0x2c
je 0x406ca0
cmp eax, 0x29
je 0x406edc
call fcn.0040b660
jmp 0x406edc
push eax
call fcn.00402ed0
add esp, 4
call fcn.00401250
test eax, eax
je 0x406ed6
or esi, 0x8000
jmp 0x406edc
and esi, 0xffff7fff
mov ebx, esi
call fcn.00402130
movsx eax, al
mov dword [ebp - 0x508], eax
test eax, eax
jne 0x406c80
test ebx, 0x8000
jne 0x406f09
cmp dword [0x460b98], 0
jne 0x40720e
test esi, 0xffff7fff
je 0x406f93
test esi, 0x2000
je 0x406f3f
mov eax, dword [edi + 0xc]
sub eax, 0
je 0x406f36
sub eax, 1
jne 0x406f3f
mov eax, 0x3ff
mov dword [0x460b8c], eax
jmp 0x406f44
xor eax, eax
mov dword [0x460b8c], eax
jmp 0x406f44
mov eax, dword [0x460b8c]
and esi, 0x1fff
je 0x40720e
mov ecx, dword [edi + 0xc]
sub ecx, 0
je 0x406f7b
sub ecx, 1
jne 0x40720e
not esi
pop edi
and eax, esi
pop esi
mov dword [0x460b8c], eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
pop edi
or eax, esi
pop esi
mov dword [0x460b8c], eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
mov eax, dword [edi + 0xc]
sub eax, 0
je 0x406fba
sub eax, 1
jne 0x40720e
pop edi
pop esi
mov dword [0x460b8c], eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov dword [0x460b8c], 0x3ff
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
xor esi, esi
call fcn.00402130
movsx eax, al
mov dword [ebp - 0x508], eax
test eax, eax
je 0x407153
nop dword [eax]
cmp eax, 0x2c
jne 0x407000
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x28
jne 0x40710a
nop dword [eax]
call fcn.004023d0
mov dword [ebp - 0x508], eax
cmp eax, 0x21
jne 0x40702b
or esi, 0x100
jmp 0x4070e7
push eax
call fcn.00402ed0
lea eax, [ebp - 0x104]
push 0xffffffffffffffff
push eax
call fcn.004021f0
push 1
lea eax, [ebp - 0x104]
push 0x45115c
push eax
call fcn.0040bad0
add esp, 0x18
test eax, eax
je 0x407061
or esi, 1
jmp 0x4070e7
push 1
lea eax, [ebp - 0x104]
push 0x451160
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x407080
or esi, 2
jmp 0x4070e7
push 1
lea eax, [ebp - 0x104]
push 0x451164
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x40709f
or esi, 4
jmp 0x4070e7
push 1
lea eax, [ebp - 0x104]
push 0x451168
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x4070be
or esi, 0x10
jmp 0x4070e7
push 1
lea eax, [ebp - 0x104]
push 0x45116c
push eax
call fcn.0040bad0
add esp, 0xc
test eax, eax
je 0x4070dd
or esi, 0x20
jmp 0x4070e7
push 0x75
call fcn.0040b600
add esp, 4
call fcn.00402130
movsx eax, al
mov dword [ebp - 0x508], eax
cmp eax, 0x2c
je 0x407010
cmp eax, 0x29
je 0x40710f
call fcn.0040b660
jmp 0x40710f
mov esi, 0x37
call fcn.00402130
movsx eax, al
mov dword [ebp - 0x508], eax
test eax, eax
jne 0x406ff0
test esi, esi
je 0x407153
test esi, 0x100
je 0x407158
mov eax, dword [edi + 0xc]
sub eax, 0
je 0x40714a
sub eax, 1
jne 0x407158
mov eax, 0x37
mov dword [0x460ee0], eax
jmp 0x40715d
xor eax, eax
mov dword [0x460ee0], eax
jmp 0x40715d
mov esi, 0x37
mov eax, dword [0x460ee0]
mov ecx, dword [edi + 0xc]
sub ecx, 0
je 0x40718b
sub ecx, 1
jne 0x40720e
not esi
and esi, 0x37
pop edi
and eax, esi
pop esi
mov dword [0x460ee0], eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
and esi, 0x37
pop edi
or eax, esi
pop esi
mov dword [0x460ee0], eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
mov dword [0x460854], 0
call fcn.00402440
test eax, eax
je 0x4071c6
call fcn.00401250
neg eax
sbb eax, eax
neg eax
jne 0x4071cf
cmp dword [0x460b98], 0
jne 0x40720e
test byte [0x460b8c], 0x80
mov ecx, 0x3c
pop edi
mov eax, 1
cmovne eax, ecx
pop esi
mov dword [0x4608d8], eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret
mov dword [0x460854], 1
push dword [edi + 0xc]
call fcn.00409060
add esp, 4
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0040d87c
mov esp, ebp
pop ebp
ret