Function at 0x40815e
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
sub esp, 0x74
mov eax, 0x426fb0
call fcn.00413ae4
mov eax, 0x5494
call fcn.00413b10
or dword [ebp + 0x44], 0xffffffff
or dword [ebp - 0x10], 0xffffffff
or dword [ebp + 0x24], 0xffffffff
push ebx
xor ebx, ebx
mov eax, ebx
mov dword [ebp + 0x20], ebx
push esi
mov esi, ebx
mov dword [ebp + 0x40], eax
mov ecx, ebx
mov dword [ebp + 0x74], esi
mov dword [ebp + 0x10], ecx
mov dword [ebp + 0x34], ebx
mov dword [ebp + 0x30], ebx
mov dword [ebp + 0x50], eax
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], ebx
mov dword [ebp + 0x48], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], ebx
mov byte [ebp - 0x50], bl
cmp byte [0x459d99], bl
push 0x45ceb2
sete al
mov dword [ebp - 4], ebx
movzx eax, al
push eax
mov dword [ebp + 0x58], ebx
mov dword [ebp + 0x4c], ebx
mov dword [ebp + 0x18], ebx
mov dword [ebp + 0x28], ebx
call fcn.004078cf
push 0x40
lea ecx, [ebp - 0x84]
mov dword [ebp + 0x14], ebx
mov dword [ebp - 0x14], ebx
mov dword [ebp + 0x1c], ebx
mov dword [ebp + 0x68], ebx
call fcn.00407dec
lea ecx, [ebp - 0x144]
mov byte [ebp - 4], 1
call fcn.004068f2
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x2c], ebx
mov byte [ebp - 0x28], bl
lea ecx, [ebp - 0xe4]
mov byte [ebp - 4], 3
call fcn.004068f2
mov al, byte [0x458cbc]
mov byte [ebp - 4], 4
mov dword [0x43d4ec], 1
mov byte [0x43d4f0], al
mov dword [0x43d528], ebx
push edi
call fcn.004078c6
test al, al
jne 0x409162
mov eax, ebx
mov edi, ebx
mov dword [ebp + 0x54], eax
mov dword [ebp + 0x6c], edi
cmp eax, 0x40
jl 0x408267
cmp byte [0x44e7dc], 0
je 0x4085b8
cmp eax, dword [ebp - 0x80]
jl 0x408279
inc eax
lea ecx, [ebp - 0x84]
push eax
call fcn.00408081
mov eax, dword [ebp - 0x84]
add eax, edi
mov edi, 0x43d530
push 4
push edi
mov dword [0x43d538], eax
call fcn.0040a285
test eax, eax
je 0x408763
push edi
call fcn.00409ae0
test al, al
je 0x4086f3
call fcn.0040cb8f
test eax, eax
jne 0x4086ef
mov word [0x44d654], ax
movzx eax, byte [0x44d5c9]
push eax
movzx eax, word [0x44d5e8]
push 0x44d5cc
push 2
push eax
call fcn.00409e81
test eax, eax
je 0x4082ee
cmp eax, esi
jle 0x4082e5
mov esi, eax
mov dword [ebp + 0x74], esi
cmp eax, 1
jg 0x4085a0
movzx eax, word [0x44d5ea]
push ebx
push ebx
push 3
push eax
call fcn.00409e81
test eax, eax
je 0x408315
cmp eax, esi
jle 0x40830c
mov esi, eax
mov dword [ebp + 0x74], esi
cmp eax, 1
jg 0x4085a0
movzx eax, word [0x44d5ea]
push ebx
push eax
push dword [0x44d598]
call fcn.0040c793
movzx eax, word [0x44d5ea]
push 0x44d5ce
push eax
push dword [0x44d598]
call fcn.004099fb
movzx eax, word [0x44d5ec]
push ebx
push ebx
push ebx
push eax
call fcn.00409e81
test eax, eax
je 0x408367
cmp eax, esi
jle 0x40835e
mov esi, eax
mov dword [ebp + 0x74], esi
cmp eax, 1
jg 0x4085a0
push 0x3000
lea eax, [ebp - 0x54a0]
push eax
push dword [0x44e654]
movzx eax, word [0x44d5ea]
push eax
push dword [0x44d598]
call fcn.00409965
test al, al
je 0x4083b3
push 0x800
mov edi, 0x44d654
lea eax, [ebp - 0x54a0]
push edi
push eax
call fcn.0040e234
push 0x800
push edi
push edi
call fcn.00403957
movzx ecx, word [0x44d5d2]
movzx eax, word [0x44d5d0]
shl ecx, 0x10
or ecx, eax
push ecx
mov ecx, dword [0x43d538]
lea ecx, [ecx + 0x28]
call fcn.0040717c
mov eax, dword [0x43d538]
mov dword [eax + 0x30], ebx
mov dword [eax + 0x34], ebx
mov eax, dword [0x43d538]
mov dword [eax + 0x38], ebx
mov dword [eax + 0x3c], ebx
mov ecx, dword [0x43d538]
lea eax, [ecx + 0x38]
push eax
lea eax, [ecx + 0x30]
push eax
lea eax, [ecx + 0x28]
push eax
movzx eax, word [0x44d5ea]
push eax
push dword [0x44d598]
call fcn.004097f7
movzx edi, word [0x44d5ea]
mov ecx, dword [0x44d598]
mov dword [ebp + 0x60], ecx
test edi, edi
je 0x40842c
test ecx, ecx
jne 0x408553
mov byte [ebp + 0x73], bl
lea ecx, [ebp - 0x24a0]
call fcn.00407e0e
push 0x2310
lea eax, [ebp - 0x24a0]
mov byte [ebp - 4], 5
push ebx
push eax
call fcn.00414af0
add esp, 0xc
lea eax, [ebp - 0x2478]
push 0x800
push 0x44d654
push eax
call fcn.004068bd
lea eax, [ebp - 0x2478]
push eax
call fcn.0040385b
mov edi, eax
lea eax, [ebp - 0x2478]
cmp edi, eax
jbe 0x408493
movzx eax, word [edi]
push eax
call fcn.0040372d
test al, al
je 0x408493
xor eax, eax
mov word [edi], ax
cmp byte [ebp + 0x73], 0
mov eax, dword [0x43d538]
mov ecx, dword [eax + 0x28]
mov eax, dword [eax + 0x2c]
mov dword [ebp - 0x1460], ecx
mov ecx, dword [0x44d5e4]
mov dword [ebp - 0x145c], eax
mov eax, dword [0x44d5e0]
mov dword [ebp - 0x1440], eax
mov dword [ebp - 0x143c], ecx
jne 0x40857f
push ebx
push ebx
push ebx
push 6
push ebx
lea eax, [ebp - 0x24a0]
mov ecx, 0x452b98
push eax
call fcn.004014ea
test eax, eax
je 0x40857f
call fcn.00409bad
test eax, eax
je 0x40857c
push 0x44d654
lea ecx, [ebp - 0x144]
call fcn.004069d4
mov edi, dword [ebp + 0x6c]
inc dword [ebp + 0x54]
add edi, 0x48
mov dword [ebp + 0x6c], edi
jmp 0x408582
push ecx
call fcn.0040a132
movzx eax, ax
mov dword [ebp + 0x3c], eax
mov eax, dword [ebp + 0x60]
add eax, 2
push eax
call fcn.0040a132
movzx edx, ax
lea eax, [edi - 4]
cmp edx, eax
ja 0x40842c
cmp dword [ebp + 0x3c], 0x17
je 0x40855d
mov ecx, dword [ebp + 0x60]
push 0xfffffffffffffffc
add ecx, 4
pop eax
add ecx, edx
sub eax, edx
mov dword [ebp + 0x60], ecx
add edi, eax
cmp edi, 4
jae 0x408515
jmp 0x40842c
push str.AES_0017
push 0x44d654
push 0x45ceb2
push 0x22
mov byte [ebp + 0x73], 1
call fcn.00407d97
jmp 0x40842f
inc dword [ebp + 0x40]
mov edi, dword [ebp + 0x6c]
add dword [ebp + 0x14], 1
lea ecx, [ebp - 0x1478]
mov byte [ebp - 4], 4
adc dword [ebp - 0x14], ebx
call fcn.00406418
mov eax, dword [ebp + 0x54]
jmp 0x408255
push 0x44d654
push 0x45ceb2
push 0x1c
call fcn.00401653
mov dword [ebp + 0x68], 1
mov edi, dword [ebp + 0x74]
cmp byte [0x44e7dc], 0
mov eax, dword [0x44d588]
mov dword [ebp - 0x48], eax
mov eax, dword [0x44d58c]
mov dword [ebp - 0x44], eax
mov eax, dword [0x44d548]
mov dword [ebp - 0x4c], eax
mov eax, dword [0x44d550]
mov dword [ebp - 0x18], eax
mov eax, dword [0x44d554]
mov dword [ebp - 0x20], eax
je 0x40865c
push 0x45ceb2
mov dword [0x44e7e0], ebx
call fcn.0040809b
test al, al
mov eax, str.zx01
jne 0x40860a
mov eax, 0x428ec4
push 0x800
push eax
push 0x45ceb2
call fcn.004038ed
mov eax, dword [0x44d568]
test eax, eax
je 0x408639
mov eax, dword [eax]
push 1
mov esi, dword [eax]
mov ecx, esi
call dword [0x428220]
mov ecx, dword [0x44d568]
call esi
mov dword [0x44d568], ebx
call fcn.0040a147
cmp byte [0x459d99], 0
push 0x45ceb2
sete al
movzx eax, al
push eax
call fcn.004078cf
mov eax, ebx
mov dword [ebp + 0x3c], ebx
cmp dword [ebp + 0x54], eax
jle 0x408ce5
mov ecx, dword [ebp + 0x20]
shl ecx, 6
mov dword [ebp - 0x40], ecx
add ecx, eax
imul eax, eax, 0x48
mov dword [ebp + 0x44], ecx
lea ecx, [ebp - 0x144]
add eax, dword [ebp - 0x84]
mov dword [0x43d538], eax
call fcn.00406a10
cmp byte [0x44e7dc], 0
mov esi, dword [0x43d538]
mov dword [ebp + 0x38], eax
je 0x4087b4
mov ecx, dword [esi + 0x20]
cmp ecx, dword [0x44e7e0]
je 0x4087b4
movzx eax, word [0x44d600]
cmp ecx, eax
jne 0x408767
mov esi, 0x45ceb2
push esi
call fcn.0040809b
test al, al
mov eax, str.zipx
jne 0x4086de
mov eax, 0x428ed8
push 0x800
push eax
push esi
call fcn.004038ed
jmp 0x408777
mov edi, eax
jmp 0x408727
mov eax, dword [ebp + 0x14]
mov ecx, dword [0x44d610]
xor eax, ecx
movzx eax, ax
or eax, ebx
je 0x40872c
cmp ecx, 0xffff
jne 0x408715
cmp dword [0x44d614], ebx
je 0x40872c
push 0x45ceb2
mov ecx, 0x452b1c
call fcn.004016df
push 3
pop edi
mov dword [ebp + 0x74], edi
jmp 0x408757
push edi
call fcn.00409b28
test al, al
jne 0x408751
cmp byte [0x44e7e4], al
je 0x408748
push edi
call fcn.00409b04
test al, al
jne 0x408751
mov dword [ebp + 0x1c], 1
jmp 0x408754
mov dword [ebp + 0x1c], ebx
mov edi, dword [ebp + 0x74]
mov dword [ebp + 0x68], 1
jmp 0x4085bb
push 0x33
jmp 0x408726
push ecx
push 0x800
push 0x45ceb2
call fcn.004080d5
mov eax, dword [0x43d538]
mov eax, dword [eax + 0x20]
mov dword [0x44e7e0], eax
mov eax, dword [0x44d568]
test eax, eax
je 0x4087a3
mov eax, dword [eax]
push 1
mov esi, dword [eax]
mov ecx, esi
call dword [0x428220]
mov ecx, dword [0x44d568]
call esi
mov dword [0x44d568], ebx
call fcn.0040a147
mov esi, dword [0x43d538]
mov eax, dword [esi]
add eax, dword [0x44d590]
mov esi, dword [esi + 4]
adc esi, dword [0x44d594]
push ebx
push 0x2000
push esi
push eax
mov dword [ebp + 4], eax
call fcn.00413ed0
mov dword [ebp + 0x64], eax
mov eax, dword [ebp + 4]
mov ecx, eax
sub ecx, dword [ebp + 0x64]
mov dword [ebp + 0x6c], esi
sbb dword [ebp + 0x6c], edx
cmp esi, ebx
jg 0x408885
jl 0x4087f8
cmp eax, ebx
jae 0x408885
push 0x45ceb2
mov ecx, 0x452b1c
call fcn.004016df
cmp dword [ebp + 0x44], 0
push 2
pop edi
mov dword [ebp + 0x74], edi
jne 0x40887a
mov ecx, dword [0x44d590]
mov eax, ecx
mov edx, dword [0x44d594]
or eax, edx
je 0x40887a
mov eax, dword [0x43d538]
push ebx
push 0x2000
mov dword [0x44d590], ebx
mov dword [0x44d594], ebx
mov esi, dword [eax + 4]
mov dword [ebp + 0x34], ecx
mov ecx, dword [eax]
push esi
push ecx
mov dword [ebp + 0x30], edx
mov dword [ebp + 0x5c], ecx
call fcn.00413ed0
mov ecx, dword [ebp + 0x5c]
sub ecx, eax
mov dword [ebp + 0x64], eax
mov eax, esi
sbb eax, edx
mov dword [ebp + 0x6c], eax
cmp esi, ebx
jg 0x408888
jl 0x40886b
cmp dword [ebp + 0x5c], ebx
jae 0x408888
push 0x45ceb2
mov ecx, 0x452b1c
call fcn.004016df
push 3
pop edi
mov dword [ebp + 0x74], edi
jmp 0x408f06
mov eax, dword [ebp + 0x6c]
cmp ecx, dword [0x44d588]
jne 0x4088cd
cmp eax, dword [0x44d58c]
jne 0x4088cd
cmp byte [0x44e7dc], 0
jne 0x4088cd
mov eax, dword [0x44d548]
mov esi, dword [ebp + 0x64]
sub eax, esi
mov ecx, dword [0x44d544]
sub eax, ecx
cdq
add dword [0x44d550], eax
adc dword [0x44d554], edx
lea eax, [esi + ecx]
mov dword [0x44d548], eax
jmp 0x408962
mov edi, dword [0x44d568]
push ebx
push dword [ebp + 0x6c]
mov eax, dword [edi]
push ecx
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x428220]
mov ecx, edi
call esi
mov edi, dword [0x44d568]
mov eax, dword [edi]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x428220]
mov ecx, edi
call esi
push 0x2000
push dword [0x44d544]
mov dword [0x44d588], eax
mov dword [0x44d58c], edx
call fcn.0040a69c
cdq
mov esi, edx
mov ecx, eax
mov dword [0x44d550], ecx
mov dword [0x44d554], esi
cmp esi, ebx
jg 0x40893e
jl 0x40886b
cmp ecx, ebx
jbe 0x40886b
mov eax, dword [0x44d544]
add eax, dword [ebp + 0x64]
mov edi, dword [ebp + 0x74]
mov dword [0x44d548], eax
mov eax, dword [ebp + 0x64]
cdq
sub ecx, eax
mov dword [0x44d550], ecx
sbb esi, edx
mov dword [0x44d554], esi
push 4
mov esi, 0x43d530
push esi
call fcn.0040a285
test eax, eax
je 0x40886b
push esi
call fcn.00409b4c
test al, al
jne 0x408a0f
cmp dword [ebp + 0x44], 0
mov edx, dword [0x44d594]
mov ecx, dword [0x44d590]
jne 0x4089b1
mov eax, ecx
or eax, edx
je 0x4089b1
mov dword [ebp + 0x34], ecx
mov dword [ebp + 0x30], edx
mov dword [0x44d590], ebx
mov dword [0x44d594], ebx
jmp 0x4089d5
or ecx, edx
jne 0x40886b
mov esi, dword [ebp + 0x34]
mov eax, esi
mov ecx, dword [ebp + 0x30]
or eax, ecx
je 0x40886b
mov dword [0x44d590], esi
mov dword [0x44d594], ecx
mov eax, dword [0x43d538]
push dword [eax + 4]
push dword [eax]
call fcn.0040a4c5
test eax, eax
jne 0x40886b
push 4
mov esi, 0x43d530
push esi
call fcn.0040a285
test eax, eax
je 0x40886b
push esi
call fcn.00409b4c
test al, al
je 0x40886b
call fcn.0040cd01
mov esi, eax
test esi, esi
je 0x408a30
push 0x45ceb2
mov ecx, 0x452b1c
call fcn.004016df
mov edi, esi
jmp 0x40887d
push ebx
xor eax, eax
push 0x44d5a2
mov word [0x44d654], ax
movzx eax, word [0x44d5c0]
push 2
push eax
call fcn.00409e81
test eax, eax
je 0x408a75
cmp eax, edi
jle 0x408a5a
mov edi, eax
mov dword [ebp + 0x74], edi
cmp eax, 1
jle 0x408a75
push 0x44d654
push 0x45ceb2
push 0x1c
call fcn.00401653
jmp 0x408f06
mov eax, dword [0x44d598]
test eax, eax
je 0x408a8b
push eax
call fcn.004186ce
pop ecx
mov dword [0x44d598], ebx
movzx eax, word [0x44d5c2]
push ebx
push ebx
push 3
push eax
call fcn.00409e81
test eax, eax
je 0x408aae
cmp eax, edi
jle 0x408aa9
mov edi, eax
mov dword [ebp + 0x74], edi
cmp eax, 1
jg 0x408a5f
movzx eax, word [0x44d5c2]
push 1
push eax
push dword [0x44d598]
call fcn.0040c793
push 0x3000
lea eax, [ebp - 0x54a0]
push eax
push dword [0x44e654]
movzx eax, word [0x44d5c2]
push eax
push dword [0x44d598]
call fcn.00409965
mov edi, 0x800
mov esi, 0x44d654
test al, al
je 0x408b0c
push edi
push esi
lea eax, [ebp - 0x54a0]
push eax
call fcn.0040e234
push edi
push esi
push esi
call fcn.00403957
mov edx, dword [0x43d538]
push 0x44e668
push 0x44e660
push 0x44e658
mov eax, dword [edx + 0x28]
mov ecx, dword [edx + 0x2c]
mov dword [0x44e658], eax
mov dword [0x44e65c], ecx
mov eax, dword [edx + 0x30]
mov ecx, dword [edx + 0x34]
mov dword [0x44e660], eax
mov dword [0x44e664], ecx
mov eax, dword [edx + 0x38]
mov ecx, dword [edx + 0x3c]
mov dword [0x44e668], eax
movzx eax, word [0x44d5c2]
push eax
push dword [0x44d598]
mov dword [0x44e66c], ecx
call fcn.004097f7
movzx eax, word [0x44d5c2]
push 0x44d5a4
push eax
push dword [0x44d598]
call fcn.004099fb
push edi
push dword [ebp + 0x38]
push esi
call fcn.004068bd
mov ecx, dword [0x43d538]
lea eax, [ecx + 0x24]
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
push dword [ecx + 0x1c]
push esi
call fcn.0040e270
cmp word [0x44d654], 0
mov byte [ebp + 0x73], al
je 0x408be5
cmp word [0x44d656], 0
je 0x408be5
movzx eax, word [0x44d658]
mov ecx, 0x44d658
test ax, ax
je 0x408be5
mov edx, eax
cmp dx, 0x3a
jne 0x408bd8
push 0x5f
pop eax
mov word [ecx], ax
add ecx, 2
movzx eax, word [ecx]
mov edx, eax
test ax, ax
jne 0x408bcc
push edi
push esi
push esi
call fcn.0040323b
cmp byte [ebp + 0x73], 0
je 0x408bf9
mov edx, ebx
mov esi, ebx
jmp 0x408c05
mov edx, dword [0x43d508]
mov esi, dword [0x43d50c]
movzx ecx, word [0x44d5c2]
movzx eax, word [0x44d5c0]
add ecx, 0x1e
add eax, ecx
xor ecx, ecx
add eax, edx
mov edx, dword [ebp - 0x10]
mov dword [ebp + 0x5c], eax
mov eax, edx
adc ecx, esi
and eax, dword [ebp + 0x24]
mov dword [ebp + 0x60], ecx
mov ecx, dword [0x43d538]
cmp eax, 0xffffffff
je 0x408e91
mov eax, dword [ebp - 0x3c]
cmp eax, dword [ecx + 0x20]
jne 0x408e91
mov edi, dword [ecx + 4]
mov eax, dword [ebp + 0x24]
mov esi, dword [ecx]
mov dword [ebp + 0x38], esi
mov dword [ebp + 0x64], edi
cmp edi, eax
jg 0x408e91
jl 0x408c67
cmp esi, edx
jae 0x408e91
sub edx, esi
sbb eax, edi
mov dword [ebp + 4], eax
js 0x408e91
jg 0x408c82
cmp edx, 0x200
jbe 0x408e91
mov ecx, dword [ebp + 0x60]
mov eax, dword [ebp + 0x5c]
mov dword [ebp - 0x64], ecx
mov ecx, dword [ebp + 0x58]
mov dword [ebp - 0x70], esi
mov dword [ebp - 0x6c], edi
mov dword [ebp - 0x68], eax
cmp dword [ebp + 0x4c], edi
jg 0x408d62
jl 0x408caa
cmp ecx, esi
ja 0x408d62
mov edx, ecx
mov ecx, dword [ebp + 0x4c]
add edx, dword [ebp + 0x18]
adc ecx, dword [ebp + 0x28]
cmp ecx, edi
jg 0x408cc7
jl 0x408d6d
cmp edx, esi
jbe 0x408d6d
push 0x44d654
push 0x45ceb2
push 0x1c
call fcn.00401653
push 3
pop eax
mov dword [ebp + 0x74], eax
mov dword [ebp + 0x68], 1
mov edi, dword [0x44d568]
push ebx
push dword [ebp - 0x44]
mov eax, dword [edi]
push dword [ebp - 0x48]
mov esi, dword [eax + 0x10]
mov ecx, esi
call dword [0x428220]
mov ecx, edi
call esi
mov edi, dword [0x44d568]
mov eax, dword [edi]
mov esi, dword [eax + 0x14]
mov ecx, esi
call dword [0x428220]
mov ecx, edi
call esi
push 0x2000
push dword [0x44d544]
mov dword [0x44d588], eax
mov dword [0x44d58c], edx
call fcn.0040a69c
mov eax, dword [ebp - 0x4c]
inc dword [ebp + 0x20]
cmp dword [ebp + 0x68], 0
mov esi, dword [ebp + 0x74]
mov dword [0x44d548], eax
mov eax, dword [ebp - 0x18]
mov dword [0x44d550], eax
mov eax, dword [ebp - 0x20]
mov dword [0x44d554], eax
jne 0x409162
jmp 0x40823e
mov edx, dword [ebp + 0x18]
add edx, ecx
mov ecx, dword [ebp + 0x28]
adc ecx, dword [ebp + 0x4c]
mov edi, eax
mov eax, dword [ebp + 0x60]
add edi, esi
mov dword [ebp + 4], edi
adc eax, dword [ebp + 0x64]
add esi, dword [ebp + 0x5c]
mov dword [ebp + 0x6c], eax
mov eax, dword [ebp + 0x64]
adc eax, dword [ebp + 0x60]
cmp dword [ebp + 0x4c], eax
jg 0x408da9
jl 0x408d92
cmp dword [ebp + 0x58], esi
jae 0x408da9
mov eax, dword [ebp + 0x6c]
cmp ecx, eax
jg 0x408cc7
jl 0x408dac
cmp edx, edi
jae 0x408cc7
jmp 0x408dac
mov eax, dword [ebp + 0x6c]
mov edi, dword [ebp - 0x5c]
mov esi, ebx
mov dword [ebp + 0x2c], esi
test edi, edi
je 0x408e2a
mov ecx, dword [ebp + 0x50]
add ecx, 8
mov edi, dword [ecx - 4]
mov edx, dword [ecx - 8]
cmp edi, dword [ebp + 0x64]
jg 0x408df3
jl 0x408dd0
cmp edx, dword [ebp + 0x38]
ja 0x408df3
mov eax, dword [ecx + 4]
mov esi, edx
add esi, dword [ecx]
adc eax, edi
cmp eax, dword [ebp + 0x64]
jg 0x408cc7
jl 0x408ded
cmp esi, dword [ebp + 0x38]
ja 0x408cc7
mov eax, dword [ebp + 0x6c]
mov esi, dword [ebp + 0x2c]
cmp edi, eax
jg 0x408e1c
jl 0x408dfe
cmp edx, dword [ebp + 4]
jae 0x408e1c
add edx, dword [ecx]
mov eax, dword [ecx + 4]
adc eax, edi
cmp eax, dword [ebp + 0x6c]
jg 0x408cc7
jl 0x408e19
cmp edx, dword [ebp + 4]
jae 0x408cc7
mov eax, dword [ebp + 0x6c]
mov edi, dword [ebp - 0x5c]
inc esi
add ecx, 0x10
mov dword [ebp + 0x2c], esi
cmp esi, edi
jb 0x408dbe
mov ecx, dword [ebp + 0x48]
inc edi
mov dword [ebp - 0x5c], edi
cmp edi, ecx
jbe 0x408e77
mov eax, ecx
add ecx, 0x20
shr eax, 2
add ecx, eax
mov dword [ebp + 0x48], ecx
cmp edi, ecx
jbe 0x408e4b
mov ecx, edi
mov dword [ebp + 0x48], ecx
shl ecx, 4
push ecx
push dword [ebp + 0x50]
call fcn.0041a956
mov esi, eax
mov dword [ebp + 0x50], esi
pop ecx
pop ecx
test esi, esi
jne 0x408e6c
mov ecx, 0x452b1c
call fcn.004017fa
mov eax, dword [ebp + 0x48]
mov dword [ebp - 0x60], esi
mov dword [ebp - 0x58], eax
jmp 0x408e7a
mov esi, dword [ebp + 0x50]
mov eax, edi
lea edi, [esi - 0x10]
shl eax, 4
lea esi, [ebp - 0x70]
add edi, eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov ecx, dword [0x43d538]
mov esi, dword [ecx]
mov eax, dword [ebp + 0x5c]
mov edi, dword [ecx + 4]
mov edx, dword [ebp + 0x60]
mov dword [ebp + 0x58], esi
add esi, eax
mov dword [ebp + 0x18], eax
mov eax, dword [ecx + 0x20]
mov cl, byte [0x459d99]
mov dword [ebp + 0x4c], edi
adc edi, edx
mov dword [ebp + 0x28], edx
mov dword [ebp - 0x10], esi
mov dword [ebp + 0x24], edi
mov dword [ebp - 0x3c], eax
test cl, cl
je 0x408ed0
push 0x49
pop eax
cmp word [0x45be92], ax
mov al, 1
jne 0x408ed2
mov al, bl
push ebx
push eax
test cl, cl
mov edi, 0x44d654
sete al
movzx eax, al
push eax
push edi
call fcn.004078e8
test al, al
je 0x408ce5
cmp byte [0x459d99], 0
je 0x408f1e
cmp byte [ebp + 0x73], 0
je 0x4090e3
mov edi, dword [ebp + 0x74]
mov eax, dword [ebp + 0x3c]
inc eax
mov dword [ebp + 0x3c], eax
cmp eax, dword [ebp + 0x54]
jge 0x408ce5
mov ecx, dword [ebp - 0x40]
jmp 0x408673
cmp byte [ebp + 0x73], 0
mov esi, ebx
je 0x409012
cmp byte [0x459cf3], 0
jne 0x408f03
cmp word [0x44d654], si
je 0x408f03
cmp dword [0x459cf8], 1
je 0x408f03
mov eax, dword [0x43d538]
cmp dword [eax + 0x1c], esi
je 0x408f55
cmp dword [eax + 0x1c], 0xb
jne 0x408f58
mov esi, dword [eax + 0x24]
push edi
call fcn.00402670
test al, al
jne 0x408fc5
cmp byte [0x459d40], al
push esi
sete al
movzx eax, al
push eax
push edi
call fcn.00402700
test eax, eax
je 0x408fbf
movzx eax, byte [0x459ce3]
push eax
push 1
push edi
call fcn.00402541
cmp byte [0x459d40], 0
push esi
sete al
movzx eax, al
push eax
push edi
call fcn.00402700
test eax, eax
je 0x408fbf
push edi
push 0x45ceb2
push 0x14
call fcn.00401653
mov ecx, 0x452b1c
call fcn.0040192c
jmp 0x408f03
inc dword [0x43d528]
push edi
lea ecx, [ebp - 0xe4]
call fcn.004069d4
push dword [0x44e65c]
lea ecx, [ebp - 0x38]
push dword [0x44e658]
call fcn.00408137
push dword [0x44e66c]
lea ecx, [ebp - 0x38]
push dword [0x44e668]
call fcn.00408137
push dword [0x44e664]
lea ecx, [ebp - 0x38]
push dword [0x44e660]
call fcn.00408137
jmp 0x408f03
push edi
call fcn.00409cbc
cmp eax, 0xffffffff
je 0x40907d
test eax, eax
je 0x409061
cmp eax, 1
jne 0x4090e3
mov eax, dword [0x459ccc]
cmp eax, 2
je 0x408f03
cmp byte [0x459cf4], 0
jne 0x408f03
cmp byte [0x459cf3], 0
jne 0x408f03
test eax, eax
je 0x40908e
cmp eax, 3
jne 0x4090e3
jmp 0x40908e
mov eax, dword [0x459ccc]
cmp eax, 2
je 0x408f03
test eax, eax
je 0x409078
cmp eax, 3
jne 0x4090e3
xor esi, esi
inc esi
jmp 0x40908a
cmp byte [0x459cf3], 0
jne 0x408f03
test esi, esi
je 0x4090e3
movzx ecx, word [0x44d5a8]
movzx eax, word [0x44d5a6]
shl ecx, 0x10
add ecx, eax
mov dword [ebp + 8], ebx
push ecx
lea ecx, [ebp + 8]
mov dword [ebp + 0xc], ebx
call fcn.0040717c
push ebx
lea eax, [ebp + 8]
push eax
push dword [0x43d514]
push dword [0x43d510]
push 0x800
push edi
push 0x452b98
call fcn.0040775a
cmp eax, 6
je 0x408cde
cmp eax, 1
je 0x408f03
mov eax, dword [0x43d538]
test byte [eax + 0x40], 1
je 0x409126
call fcn.0040d14d
mov ecx, eax
test ecx, ecx
je 0x409126
cmp ecx, 9
je 0x409145
cmp ecx, 0xc
jne 0x40910a
inc dword [ebp + 0x10]
push 6
jmp 0x409114
cmp ecx, dword [ebp + 0x74]
jle 0x409112
mov dword [ebp + 0x74], ecx
push 0x1c
pop eax
push edi
push 0x45ceb2
push eax
call fcn.00401653
jmp 0x408f03
call fcn.00409313
mov edi, dword [ebp + 0x74]
test eax, eax
je 0x408f06
cmp eax, edi
jle 0x408f06
mov edi, eax
jmp 0x40887d
push 2
lea ecx, [ebp - 0x190]
call fcn.004016aa
lea ecx, [ebp - 0x190]
call fcn.0040736c
mov esi, dword [ebp + 0x74]
mov bl, 1
push 0x800
lea eax, [ebp - 0x34a0]
push eax
lea ecx, [ebp - 0xe4]
call fcn.00406a5e
test al, al
je 0x409201
mov edi, dword [ebp - 0x38]
add edi, 0x10
mov eax, dword [edi - 0x10]
mov ecx, dword [edi - 0xc]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], ecx
mov eax, dword [edi - 8]
mov ecx, dword [edi - 4]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], ecx
mov eax, dword [edi]
mov ecx, dword [edi + 4]
mov dword [ebp + 8], eax
mov eax, dword [0x45ae70]
neg eax
mov dword [ebp + 0xc], ecx
lea ecx, [ebp + 8]
sbb eax, eax
and eax, ecx
lea ecx, [ebp - 0x24]
push eax
mov eax, dword [0x45ae6c]
neg eax
sbb eax, eax
and eax, ecx
lea ecx, [ebp - 0x1c]
push eax
mov eax, dword [0x45ae68]
neg eax
sbb eax, eax
and eax, ecx
push eax
lea eax, [ebp - 0x34a0]
push eax
call fcn.004027a2
push 0x800
lea eax, [ebp - 0x34a0]
push eax
lea ecx, [ebp - 0xe4]
lea edi, [edi + 0x18]
call fcn.00406a5e
test al, al
jne 0x409187
call fcn.004078c6
test al, al
jne 0x40922c
cmp dword [ebp + 0x1c], 0
je 0x40922c
cmp byte [0x44e7dc], al
jne 0x40922c
push 0x45ceb2
mov ecx, 0x452b1c
call fcn.004016df
test esi, esi
jne 0x40922c
inc esi
mov edi, dword [ebp + 0x44]
inc edi
cmp dword [0x43d528], 0
jne 0x409261
push 0x49
pop eax
cmp word [0x45be92], ax
je 0x409261
test bl, bl
jne 0x409255
push 0x45ceb2
push 0x44
call fcn.00401624
push 0xa
mov ecx, 0x452b1c
call fcn.004018e4
test edi, edi
jne 0x40927d
cmp esi, 1
jg 0x40927d
mov eax, dword [ebp + 0x40]
xor cx, cx
cmp cx, ax
sbb esi, esi
and esi, 0x46
add esi, 0xb
jmp 0x4092ab
mov ecx, dword [ebp + 0x10]
movzx eax, cx
cmp edi, eax
jne 0x409290
cmp esi, 1
jg 0x409290
push 0x52
jmp 0x40929e
cmp word [ebp + 0x40], 0
je 0x4092a1
cmp esi, 1
jg 0x4092a1
push 0x51
pop esi
jmp 0x4092ab
test cx, cx
je 0x4092ab
test esi, esi
jne 0x4092ab
inc esi
lea ecx, [ebp - 0xe4]
call fcn.004012c6
mov ebx, dword [ebp - 0x38]
mov byte [ebp - 4], 6
pop edi
test ebx, ebx
je 0x4092dc
cmp byte [ebp - 0x28], 0
je 0x4092d5
mov eax, dword [ebp - 0x30]
shl eax, 3
push eax
push ebx
call fcn.0040599b
push ebx
call fcn.004186ce
pop ecx
lea ecx, [ebp - 0x144]
call fcn.004012c6
lea ecx, [ebp - 0x84]
call fcn.00407ea8
mov eax, dword [ebp + 0x50]
test eax, eax
je 0x409300
push eax
call fcn.004186ce
pop ecx
mov ecx, dword [ebp - 0xc]
mov eax, esi
pop esi
pop ebx
mov dword fs:[0], ecx
add ebp, 0x78
leave
ret