Function at 0x58a2f0
Capabilities:
Encode data using xor
Parse pe header

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffe5c
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 0x94], edx
mov dword [ebp - 0x98], edx
mov dword [ebp - 0x9c], edx
mov dword [ebp - 0xa0], edx
mov dword [ebp - 0xa4], edx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x14], eax
xor eax, eax
push ebp
push 0x58d456
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x5a5c6c]
xor edx, edx
mov dword [eax], edx
cmp byte [0x5a59c0], 0
je 0x58a34b
mov byte [ebp - 0x15], 1
jmp 0x58d430
mov byte [ebp - 0x15], 0
mov eax, 0x5acdc8
mov ecx, dword [0x5a5a64]
mov edx, dword [0x5a5a60]
call fcn.00403cd8
cmp dword [0x5acdcc], 0
je 0x58d430
cmp dword [0x5acdd0], 0xa
jge 0x58a3b0
push dword [0x5a5a04]
push dword [0x5a5a18]
push dword [0x5a5a10]
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
jmp 0x58d430
lea edx, [ebp - 0x20]
mov eax, dword [0x5acdcc]
mov ecx, 0xa
call fcn.004027e0
cmp word [ebp - 0x20], 0x5a4d
je 0x58a3ff
push dword [0x5a5a04]
push dword [0x5a5a14]
push dword [0x5a5a10]
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
jmp 0x58d430
movzx eax, word [ebp - 0x18]
shl eax, 4
mov dword [ebp - 0x24], eax
mov eax, dword [0x5acdd0]
cmp eax, dword [ebp - 0x24]
jge 0x58a448
push dword [0x5a5a04]
push dword [0x5a5a18]
push dword [0x5a5a10]
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
jmp 0x58d430
push dword [0x5a5a1c]
lea ecx, [ebp - 0x98]
mov edx, 4
mov eax, dword [ebp - 0x24]
call fcn.00407424
push dword [ebp - 0x98]
push 0x58d470
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
cmp dword [0x5acdd0], 0x40
jge 0x58a4c8
push dword [0x5a5a04]
push dword [0x5a5a18]
push dword [0x5a5a10]
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
jmp 0x58d430
mov eax, 0x5acdd4
xor ecx, ecx
mov edx, 0x40
call fcn.00402b14
mov edx, 0x5acdd4
mov eax, dword [0x5acdcc]
mov ecx, 0x40
call fcn.004027e0
mov edx, dword [0x5a5a20]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
cmp dword [ebp - 0x24], 0
jne 0x58a50a
mov dword [ebp - 0x30], 0xc
jmp 0x58a512
mov eax, dword [0x5ace10]
mov dword [ebp - 0x30], eax
push dword [0x5a5a24]
lea ecx, [ebp - 0x98]
mov edx, 4
mov eax, dword [ebp - 0x30]
call fcn.00407424
push dword [ebp - 0x98]
push 0x58d470
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
mov eax, dword [ebp - 0x30]
add eax, 0x78
cmp eax, dword [0x5acdd0]
jle 0x58a597
push dword [0x5a5a04]
push dword [0x5a5a28]
push dword [0x5a5a10]
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
jmp 0x58d430
mov eax, dword [ebp - 0x30]
mov dword [0x5ace18], eax
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x60], eax
mov eax, 0x5ace20
xor ecx, ecx
mov edx, 0x78
call fcn.00402b14
mov eax, dword [0x5acdcc]
mov edx, dword [ebp - 0x60]
add eax, edx
mov edx, 0x5ace20
mov ecx, 0x78
call fcn.004027e0
add dword [ebp - 0x60], 0x78
mov eax, dword [0x5ace20]
and eax, 0xffff
cmp eax, 0x454e
jne 0x58a619
push dword [0x5a5a04]
push dword [0x5a5a2c]
push dword [0x5a5a10]
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
jmp 0x58d430
mov eax, dword [0x5ace20]
and eax, 0xffff
cmp eax, 0x454c
jne 0x58a65f
push dword [0x5a5a04]
push dword [0x5a5a30]
push dword [0x5a5a10]
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
jmp 0x58d430
cmp dword [0x5ace20], 0x4550
je 0x58a6a0
push dword [0x5a5a04]
push dword [0x5a5a34]
push dword [0x5a5a10]
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
jmp 0x58d430
mov edx, dword [0x5a5a38]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
mov eax, dword [0x5a626c]
xor dword [eax], 0xf455ff
lea ecx, [ebp - 0x94]
movzx eax, word [0x5ace24]
mov edx, 4
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
movzx eax, word [0x5ace24]
cmp eax, 0x1c2
jg 0x58a776
je 0x58aa70
cmp eax, 0x184
jg 0x58a754
je 0x58a8b1
sub eax, 0x14c
je 0x58a7d0
sub eax, 0x16
je 0x58a82a
sub eax, 4
je 0x58a857
sub eax, 2
je 0x58a884
jmp 0x58aac4
sub eax, 0x1a2
je 0x58aa19
sub eax, 4
je 0x58aa46
sub eax, 0x1a
je 0x58a938
jmp 0x58aac4
cmp eax, 0x284
jg 0x58a7aa
je 0x58a8de
sub eax, 0x1f0
je 0x58a90b
sub eax, 0x10
je 0x58a7fd
sub eax, 0x66
je 0x58a992
sub eax, 2
je 0x58a965
jmp 0x58aac4
sub eax, 0x366
je 0x58a9bf
sub eax, 0x100
je 0x58a9ec
sub eax, 0x81fe
je 0x58aa9a
jmp 0x58aac4
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d47c
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d48c
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d4a0
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d4b0
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d4c0
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d4d0
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d4e4
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d500
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d510
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d51c
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d53c
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d54c
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d564
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d57c
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d590
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d5a4
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d5b4
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58aaec
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d5c4
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
cmp word [0x5ace24], 0x14c
sete byte [0x5a5b00]
lea ecx, [ebp - 0x94]
movzx eax, word [0x5ace26]
mov edx, 4
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 1
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
movzx eax, word [0x5ace26]
mov dword [0x5acea4], eax
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace28]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 2
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea edx, [ebp - 0x94]
mov eax, dword [0x5ace28]
call fcn.0054735c
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 2
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov edx, 1
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace2c]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 3
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace30]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 4
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
movzx eax, word [0x5ace34]
mov edx, 4
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 5
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
movzx eax, word [0x5ace36]
mov edx, 4
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 6
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
cmp word [0x5ace38], 0
jne 0x58ad4d
mov edx, dword [0x5a5a98]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
mov word [0x5ace38], 0x10b
lea ecx, [ebp - 0x94]
movzx eax, word [0x5ace38]
mov edx, 4
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 7
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
mov ax, word [0x5ace38]
sub ax, 0x107
je 0x58adbc
sub ax, 4
je 0x58adec
sub ax, 0x100
je 0x58ae19
jmp 0x58ae46
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 7
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d5d8
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58ae71
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 7
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d5ec
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58ae71
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 7
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d5fc
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
jmp 0x58ae71
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 7
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d5c4
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea edx, [ebp - 0x78]
mov eax, dword [0x5a5fc8]
mov ecx, 8
call fcn.004027e0
xor eax, eax
mov dword [ebp - 0x38], eax
mov al, byte [ebp - 0x38]
add al, 0x55
mov edx, dword [ebp - 0x38]
xor byte [ebp + edx - 0x78], al
inc dword [ebp - 0x38]
cmp dword [ebp - 0x38], 8
jne 0x58ae88
push 0xa
lea eax, [ebp - 0x78]
push eax
mov eax, dword [0x5a62ac]
mov eax, dword [eax]
push eax
call sub.kernel32.dll_FindResourceA
mov dword [ebp - 0x70], eax
cmp dword [ebp - 0x70], 0
jne 0x58aec6
mov eax, dword [0x5a6204]
mov dword [eax], 0x1feb25b8
jmp 0x58aecf
mov eax, dword [0x5a6204]
xor edx, edx
mov dword [eax], edx
lea ecx, [ebp - 0x98]
xor eax, eax
mov al, byte [0x5ace3b]
mov edx, 2
call fcn.00407424
push dword [ebp - 0x98]
lea ecx, [ebp - 0x9c]
xor eax, eax
mov al, byte [0x5ace3a]
mov edx, 2
call fcn.00407424
push dword [ebp - 0x9c]
push 0x58d470
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 8
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea edx, [ebp - 0x98]
xor eax, eax
mov al, byte [0x5ace3a]
call fcn.004073f4
push dword [ebp - 0x98]
push 0x58d60c
lea edx, [ebp - 0x9c]
xor eax, eax
mov al, byte [0x5ace3b]
call fcn.004073f4
push dword [ebp - 0x9c]
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 8
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov edx, 1
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace3c]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 9
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace40]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 0xa
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace44]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 0xb
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace48]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 0xc
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace48]
call fcn.00407424
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x608]
call fcn.00423a80
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace4c]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 0xd
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace50]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 0xe
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace54]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x20c]
mov eax, dword [eax + 0x130]
mov edx, 0xf
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace58]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
xor edx, edx
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
cmp dword [0x5ace5c], 0
jne 0x58b283
mov edx, dword [0x5a5a9c]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
mov dword [0x5ace5c], 0x200
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace5c]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 1
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x98]
movzx eax, word [0x5ace62]
mov edx, 4
call fcn.00407424
push dword [ebp - 0x98]
lea ecx, [ebp - 0x9c]
movzx eax, word [0x5ace60]
mov edx, 4
call fcn.00407424
push dword [ebp - 0x9c]
push 0x58d470
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 2
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea edx, [ebp - 0x98]
movzx eax, word [0x5ace60]
call fcn.004073f4
push dword [ebp - 0x98]
push 0x58d60c
lea edx, [ebp - 0x9c]
movzx eax, word [0x5ace62]
call fcn.004073f4
push dword [ebp - 0x9c]
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 2
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov edx, 1
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x98]
movzx eax, word [0x5ace66]
mov edx, 4
call fcn.00407424
push dword [ebp - 0x98]
lea ecx, [ebp - 0x9c]
movzx eax, word [0x5ace64]
mov edx, 4
call fcn.00407424
push dword [ebp - 0x9c]
push 0x58d470
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 3
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea edx, [ebp - 0x98]
movzx eax, word [0x5ace64]
call fcn.004073f4
push dword [ebp - 0x98]
push 0x58d60c
lea edx, [ebp - 0x9c]
movzx eax, word [0x5ace66]
call fcn.004073f4
push dword [ebp - 0x9c]
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 3
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov edx, 1
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x98]
movzx eax, word [0x5ace6a]
mov edx, 4
call fcn.00407424
push dword [ebp - 0x98]
lea ecx, [ebp - 0x9c]
movzx eax, word [0x5ace68]
mov edx, 4
call fcn.00407424
push dword [ebp - 0x9c]
push 0x58d470
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 4
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea edx, [ebp - 0x98]
movzx eax, word [0x5ace68]
call fcn.004073f4
push dword [ebp - 0x98]
push 0x58d60c
lea edx, [ebp - 0x9c]
movzx eax, word [0x5ace6a]
call fcn.004073f4
push dword [ebp - 0x9c]
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 4
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov edx, 1
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace6c]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 5
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 5
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d618
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace70]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 6
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea edx, [ebp - 0x94]
mov eax, dword [0x5ace70]
call fcn.004073f4
lea eax, [ebp - 0x94]
mov edx, 0x58d62c
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 6
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov edx, 1
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace74]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 7
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace78]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 8
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
mov eax, dword [0x5ace78]
mov dword [0x5a5aa0], eax
push 0x5a5aa4
push 0x5a5aa0
mov eax, dword [0x5acdbc]
call fcn.00403e50
push eax
call sub.IMAGEHLP.DLL_MapFileAndCheckSumA
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x50]
cmp eax, 4
ja case.default.0x58b786
jmp dword [eax*4 + 0x58b78d]
push 0x58d63c
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5a5aa0]
call fcn.00407424
push dword [ebp - 0x94]
push 0x58d470
push 0x58d664
lea ecx, [ebp - 0x98]
mov edx, 8
mov eax, dword [0x5a5aa4]
call fcn.00407424
push dword [ebp - 0x98]
push 0x58d680
lea eax, [ebp - 0x34]
mov edx, 6
call fcn.00403d4c
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5a5aa4]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x618]
call fcn.00423a80
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x61c]
mov dl, 1
call fcn.004239e8
jmp case.default.0x58b786
lea eax, [ebp - 0x34]
mov edx, 0x58d68c
call fcn.00403aa8
jmp case.default.0x58b786
lea eax, [ebp - 0x34]
mov edx, 0x58d6a4
call fcn.00403aa8
jmp case.default.0x58b786
lea eax, [ebp - 0x34]
mov edx, 0x58d6b8
call fcn.00403aa8
jmp case.default.0x58b786
lea eax, [ebp - 0x34]
mov edx, 0x58d6d0
call fcn.00403aa8
cmp dword [ebp - 0x50], 0
je 0x58b8a3
push dword [0x5a5a04]
push 0x58d6e8
push dword [ebp - 0x34]
push 0x58d6f4
lea eax, [ebp - 0x34]
mov edx, 4
call fcn.00403d4c
push dword [0x5a5a3c]
push 0x58d700
push dword [ebp - 0x34]
lea eax, [ebp - 0x94]
mov edx, 3
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
movzx eax, word [0x5ace7c]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x28]
cmp eax, 9
ja case.0x58b8e5.4
jmp dword [eax*4 + 0x58b8ec]
lea eax, [ebp - 0x34]
mov edx, 0x58d5c4
call fcn.00403aa8
jmp 0x58b98a
lea eax, [ebp - 0x34]
mov edx, 0x58d70c
call fcn.00403aa8
jmp 0x58b98a
lea eax, [ebp - 0x34]
mov edx, 0x58d71c
call fcn.00403aa8
jmp 0x58b98a
lea eax, [ebp - 0x34]
mov edx, 0x58d730
call fcn.00403aa8
jmp 0x58b98a
lea eax, [ebp - 0x34]
mov edx, 0x58d748
call fcn.00403aa8
jmp 0x58b98a
lea eax, [ebp - 0x34]
mov edx, 0x58d760
call fcn.00403aa8
jmp 0x58b98a
lea eax, [ebp - 0x34]
mov edx, 0x58d778
call fcn.00403aa8
jmp 0x58b98a
lea eax, [ebp - 0x34]
mov edx, 0x58d5c4
call fcn.00403aa8
lea ecx, [ebp - 0x94]
movzx eax, word [0x5ace7c]
mov edx, 4
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 9
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 9
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, dword [ebp - 0x34]
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea eax, [ebp - 0x34]
call fcn.00403a10
mov ax, word [0x5ace7e]
sub ax, 0x800
je 0x58ba27
sub ax, 0x1800
je 0x58ba36
sub ax, 0x6000
je 0x58ba45
jmp 0x58ba52
lea eax, [ebp - 0x34]
mov edx, 0x58d78c
call fcn.00403aa8
jmp 0x58ba52
lea eax, [ebp - 0x34]
mov edx, 0x58d7a0
call fcn.00403aa8
jmp 0x58ba52
lea eax, [ebp - 0x34]
mov edx, 0x58d7b4
call fcn.00403aa8
lea ecx, [ebp - 0x94]
movzx eax, word [0x5ace7e]
mov edx, 4
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 0xa
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 0xa
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, dword [ebp - 0x34]
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace80]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 0xb
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace84]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 0xc
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace88]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 0xd
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace8c]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 0xe
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace90]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 0xf
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 0xf
call fcn.0044f6e8
mov eax, dword [eax + 8]
mov ecx, 0x58d7d4
mov edx, 1
mov ebx, dword [eax]
call dword [ebx + 0x20]
lea ecx, [ebp - 0x94]
mov edx, 8
mov eax, dword [0x5ace94]
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov eax, dword [ebp - 0x94]
push eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x210]
mov eax, dword [eax + 0x130]
mov edx, 0x10
call fcn.0044f6e8
mov eax, dword [eax + 8]
xor edx, edx
pop ecx
mov ebx, dword [eax]
call dword [ebx + 0x20]
mov eax, dword [0x5ace94]
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
jne 0x58bced
mov dword [ebp - 0x28], 0x10
mov eax, dword [ebp - 0x28]
shl eax, 3
mov dword [ebp - 0x28], eax
push 4
push 0x1000
mov eax, dword [ebp - 0x28]
push eax
push 0
call sub.kernel32.dll_VirtualAlloc_1
mov dword [0x5ace9c], eax
mov eax, dword [0x5ace9c]
xor ecx, ecx
mov edx, dword [ebp - 0x28]
call fcn.00402b14
mov eax, dword [0x5acdcc]
mov edx, dword [ebp - 0x60]
add eax, edx
mov edx, dword [0x5ace9c]
mov ecx, dword [ebp - 0x28]
call fcn.004027e0
mov eax, dword [ebp - 0x28]
add dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x28]
mov dword [0x5ace98], eax
mov eax, dword [0x5acdcc]
mov edx, dword [ebp - 0x60]
add eax, edx
mov dword [ebp - 0x84], eax
mov byte [ebp - 0x85], 0
mov eax, dword [0x5acea4]
dec eax
test eax, eax
jl 0x58be04
inc eax
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x38], 0
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [ebp - 0x84]
cmp dword [edx + eax*8 + 8], 0
jne 0x58bdf5
push 0x58d7e8
lea eax, [ebp - 0x98]
mov edx, dword [ebp - 0x38]
lea edx, [edx + edx*4]
mov ecx, dword [ebp - 0x84]
lea edx, [ecx + edx*8]
mov ecx, 8
call fcn.00403c3c
push dword [ebp - 0x98]
push 0x58d814
lea edx, [ebp - 0x9c]
mov eax, dword [ebp - 0x38]
call fcn.004073f4
push dword [ebp - 0x9c]
push 0x58d820
lea eax, [ebp - 0x94]
mov edx, 5
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
mov byte [ebp - 0x85], 1
inc dword [ebp - 0x38]
dec dword [ebp - 0x8c]
jne 0x58bd75
cmp byte [ebp - 0x85], 0
je 0x58c154
push 0
mov cx, word [0x58d834]
xor edx, edx
mov eax, 0x58d840
call fcn.00440904
cmp eax, 6
jne 0x58c154
mov eax, dword [0x5acea4]
dec eax
test eax, eax
jl 0x58c14d
inc eax
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x38], 0
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [ebp - 0x84]
cmp dword [edx + eax*8 + 8], 0
jne 0x58c13e
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [ebp - 0x84]
mov eax, dword [edx + eax*8 + 0x10]
mov edx, dword [ebp - 0x38]
lea edx, [edx + edx*4]
mov ecx, dword [ebp - 0x84]
mov dword [ecx + edx*8 + 8], eax
push 0x58d934
lea eax, [ebp - 0x98]
mov edx, dword [ebp - 0x38]
lea edx, [edx + edx*4]
mov ecx, dword [ebp - 0x84]
lea edx, [ecx + edx*8]
mov ecx, 8
call fcn.00403c3c
push dword [ebp - 0x98]
push 0x58d814
lea edx, [ebp - 0x9c]
mov eax, dword [ebp - 0x38]
call fcn.004073f4
push dword [ebp - 0x9c]
push 0x58d968
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [ebp - 0x84]
mov eax, dword [edx + eax*8 + 8]
lea ecx, [ebp - 0xa0]
mov edx, 8
call fcn.00407424
push dword [ebp - 0xa0]
push 0x58d974
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [ebp - 0x84]
mov eax, dword [edx + eax*8 + 8]
lea edx, [ebp - 0xa4]
call fcn.004073f4
push dword [ebp - 0xa4]
push 0x58d980
lea eax, [ebp - 0x94]
mov edx, 9
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [ebp - 0x84]
mov eax, dword [edx + eax*8 + 0x24]
and eax, 0xe0
cmp eax, 0x80
jne 0x58c13e
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [ebp - 0x84]
xor ecx, ecx
mov dword [edx + eax*8 + 0x10], ecx
push 0x58d98c
lea eax, [ebp - 0x98]
mov edx, dword [ebp - 0x38]
lea edx, [edx + edx*4]
mov ecx, dword [ebp - 0x84]
lea edx, [ecx + edx*8]
mov ecx, 8
call fcn.00403c3c
push dword [ebp - 0x98]
push 0x58d814
lea edx, [ebp - 0x9c]
mov eax, dword [ebp - 0x38]
call fcn.004073f4
push dword [ebp - 0x9c]
push 0x58d968
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [ebp - 0x84]
mov eax, dword [edx + eax*8 + 0x10]
lea ecx, [ebp - 0xa0]
mov edx, 8
call fcn.00407424
push dword [ebp - 0xa0]
push 0x58d974
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [ebp - 0x84]
mov eax, dword [edx + eax*8 + 0x10]
lea edx, [ebp - 0xa4]
call fcn.004073f4
push dword [ebp - 0xa4]
push 0x58d980
lea eax, [ebp - 0x94]
mov edx, 9
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [ebp - 0x84]
cmp dword [edx + eax*8 + 0x14], 0
jne 0x58c13e
cmp dword [ebp - 0x38], 0
jne 0x58c057
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [ebp - 0x84]
mov ecx, dword [0x5ace74]
mov dword [edx + eax*8 + 0x14], ecx
jmp 0x58c087
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [ebp - 0x84]
mov eax, dword [edx + eax*8 - 0x14]
mov edx, dword [ebp - 0x38]
lea edx, [edx + edx*4]
mov ecx, dword [ebp - 0x84]
add eax, dword [ecx + edx*8 - 0x18]
mov edx, dword [ebp - 0x38]
lea edx, [edx + edx*4]
mov ecx, dword [ebp - 0x84]
mov dword [ecx + edx*8 + 0x14], eax
push 0x58d9c0
lea eax, [ebp - 0x98]
mov edx, dword [ebp - 0x38]
lea edx, [edx + edx*4]
mov ecx, dword [ebp - 0x84]
lea edx, [ecx + edx*8]
mov ecx, 8
call fcn.00403c3c
push dword [ebp - 0x98]
push 0x58d814
lea edx, [ebp - 0x9c]
mov eax, dword [ebp - 0x38]
call fcn.004073f4
push dword [ebp - 0x9c]
push 0x58d968
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [ebp - 0x84]
mov eax, dword [edx + eax*8 + 0x14]
lea ecx, [ebp - 0xa0]
mov edx, 8
call fcn.00407424
push dword [ebp - 0xa0]
push 0x58d974
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [ebp - 0x84]
mov eax, dword [edx + eax*8 + 0x14]
lea edx, [ebp - 0xa4]
call fcn.004073f4
push dword [ebp - 0xa4]
push 0x58d980
lea eax, [ebp - 0x94]
mov edx, 9
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
inc dword [ebp - 0x38]
dec dword [ebp - 0x8c]
jne 0x58be4b
mov byte [0x5a5c0c], 1
mov eax, dword [0x5acea4]
shl eax, 3
lea eax, [eax + eax*4]
mov dword [ebp - 0x28], eax
push 4
push 0x1000
mov eax, dword [ebp - 0x28]
push eax
push 0
call sub.kernel32.dll_VirtualAlloc_1
mov dword [0x5acea8], eax
mov eax, dword [0x5acea8]
xor ecx, ecx
mov edx, dword [ebp - 0x28]
call fcn.00402b14
mov eax, dword [0x5acdcc]
mov edx, dword [ebp - 0x60]
add eax, edx
mov edx, dword [0x5acea8]
mov ecx, dword [ebp - 0x28]
call fcn.004027e0
mov eax, dword [ebp - 0x28]
mov dword [0x5acea0], eax
mov eax, dword [0x5acea4]
shl eax, 3
lea eax, [eax + eax*2]
mov dword [ebp - 0x28], eax
push 4
push 0x1000
mov eax, dword [ebp - 0x28]
push eax
push 0
call sub.kernel32.dll_VirtualAlloc_1
mov dword [0x5acf1c], eax
mov eax, dword [0x5acf1c]
xor ecx, ecx
mov edx, dword [ebp - 0x28]
call fcn.00402b14
mov eax, dword [0x5acea4]
shl eax, 5
mov dword [ebp - 0x28], eax
push 4
push 0x1000
mov eax, dword [ebp - 0x28]
push eax
push 0
call sub.kernel32.dll_VirtualAlloc_1
mov dword [0x5aceb0], eax
mov eax, dword [0x5aceb0]
xor ecx, ecx
mov edx, dword [ebp - 0x28]
call fcn.00402b14
xor eax, eax
mov dword [0x5aceac], eax
mov eax, dword [0x5aceac]
lea eax, [eax + eax*4]
mov edx, dword [0x5acea8]
mov eax, dword [edx + eax*8 + 0x14]
lea ecx, [ebp - 0x94]
mov edx, 8
call fcn.00407424
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x22c]
call fcn.00423a80
mov eax, dword [0x5aceac]
lea eax, [eax + eax*4]
mov edx, dword [0x5acea8]
mov eax, dword [edx + eax*8 + 0x14]
mov dword [ebp - 0x28], eax
push 4
push 0x1000
mov eax, dword [ebp - 0x28]
push eax
push 0
call sub.kernel32.dll_VirtualAlloc_1
mov dword [0x5ace1c], eax
mov eax, dword [0x5ace1c]
xor ecx, ecx
mov edx, dword [ebp - 0x28]
call fcn.00402b14
mov edx, dword [0x5ace1c]
mov eax, dword [0x5acdcc]
mov ecx, dword [ebp - 0x28]
call fcn.004027e0
mov eax, dword [ebp - 0x28]
mov dword [0x5ace14], eax
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x228]
mov eax, dword [eax + 0x130]
call fcn.0044f758
xor eax, eax
mov dword [0x5acf20], eax
mov esi, 0x58d9f0
mov edi, 0x5acf24
mov ecx, 3
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
mov eax, dword [0x5a6168]
mov eax, dword [eax]
sub eax, dword [0x5ace54]
sub eax, dword [0x5ace50]
mov edx, dword [0x5a6320]
mov dword [edx], eax
mov eax, dword [0x5a681c]
mov eax, dword [eax]
mov edx, dword [0x5a5c8c]
sub eax, dword [edx]
mov edx, dword [0x5a5e28]
mov edx, dword [edx]
mov ecx, dword [0x5a5eb0]
sub edx, dword [ecx]
add eax, edx
mov dword [ebp - 0x6c], eax
cmp dword [ebp - 0x6c], 0
je 0x58c39d
mov eax, dword [0x5a5f10]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5a60f4]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5a652c]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5a63b8]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5a5c70]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5a5f0c]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5a5e1c]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5a5f38]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5a60c0]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5a6644]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5a5cf8]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5a5fa8]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5a6458]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5a5e4c]
xor edx, edx
mov dword [eax], edx
mov eax, dword [0x5a5e5c]
xor edx, edx
mov dword [eax], edx
pushal
xor eax, eax
mov dword [0x5a5178], eax
mov esi, 0x5a5184
mov esi, dword [esi]
mov ebx, dword [esi]
mov edi, 0x5a5188
mov eax, 0x53a1e394
xor ebx, eax
mov dword [edi], ebx
popal
mov eax, dword [0x5acea4]
dec eax
test eax, eax
jl 0x58ca8f
inc eax
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x38], 0
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*2]
mov edx, dword [0x5acf1c]
xor ecx, ecx
mov dword [edx + eax*8], ecx
lea ecx, [ebp - 0x94]
mov edx, 4
mov eax, dword [ebp - 0x38]
call fcn.00407424
lea eax, [ebp - 0x94]
push eax
lea eax, [ebp - 0x98]
mov edx, dword [ebp - 0x38]
lea edx, [edx + edx*4]
mov ecx, dword [0x5acea8]
lea edx, [ecx + edx*8]
mov ecx, 8
call fcn.00403c3c
mov edx, dword [ebp - 0x98]
pop eax
call fcn.00403c94
mov edx, dword [ebp - 0x94]
lea eax, [ebp - 0x1a4]
mov ecx, 0xff
call fcn.00403c68
lea edx, [ebp - 0x1a4]
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*2]
mov ecx, dword [0x5acf1c]
lea eax, [ecx + eax*8 + 4]
mov cl, 0x10
call fcn.004029f0
mov eax, dword [0x5a653c]
mov eax, dword [eax]
xor eax, 0x4d3412
mov dword [ebp - 0x64], eax
mov eax, dword [0x5a65b0]
mov eax, dword [eax]
xor eax, 0xa502f3bc
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [0x5acea8]
mov eax, dword [edx + eax*8 + 0x14]
add eax, dword [0x5acdcc]
mov edx, dword [0x5a5eac]
mov edx, dword [edx]
not edx
xor edx, 0x883cc625
add eax, edx
mov edx, dword [0x5aceac]
shl edx, 2
mov ecx, dword [0x5aceb0]
mov dword [ecx + edx*8 + 0x1c], eax
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [0x5acea8]
cmp dword [edx + eax*8 + 0x14], 0
je 0x58c55f
mov eax, dword [0x5a63b4]
xor edx, edx
mov dword [eax], edx
lea eax, [ebp - 0x94]
mov edx, dword [ebp - 0x38]
lea edx, [edx + edx*4]
mov ecx, dword [0x5acea8]
lea edx, [ecx + edx*8]
mov ecx, 8
call fcn.00403c3c
mov eax, dword [ebp - 0x94]
push eax
lea eax, [ebp - 0x98]
mov edx, dword [0x5a62f8]
mov ecx, 5
call fcn.00403c3c
mov edx, dword [ebp - 0x98]
pop eax
call fcn.00403d9c
jne 0x58c55f
mov eax, dword [0x5a6214]
mov edx, dword [ebp - 0x38]
mov dword [eax], edx
mov eax, dword [0x5aceac]
shl eax, 2
mov edx, dword [0x5aceb0]
mov eax, dword [edx + eax*8 + 0x1c]
mov edx, dword [0x5a63b4]
mov dword [edx], eax
mov eax, dword [0x5aceac]
lea eax, [eax + eax*4]
mov edx, dword [0x5acea8]
mov eax, dword [edx + eax*8 + 0x10]
mov dword [ebp - 4], eax
mov dword [ebp - 0x40], 0xffff
mov eax, dword [0x5ace94]
dec eax
test eax, eax
jl 0x58c6c5
inc eax
mov dword [ebp - 0x90], eax
mov dword [ebp - 0x3c], 0
mov eax, dword [0x5ace9c]
mov edx, dword [ebp - 0x3c]
cmp dword [eax + edx*8], 0
je 0x58c59f
mov eax, dword [0x5ace9c]
mov edx, dword [ebp - 0x3c]
cmp dword [eax + edx*8 + 4], 0
jne 0x58c5a3
xor eax, eax
jmp 0x58c5a5
mov al, 1
mov byte [ebp - 0x49], al
mov eax, dword [ebp - 0x3c]
cmp eax, 0xe
ja case.default.0x58c5b4
jmp dword [eax*4 + 0x58c5bb]
mov al, byte [ebp - 0x49]
mov byte [0x5a5aac], al
jmp case.default.0x58c5b4
mov al, byte [ebp - 0x49]
mov byte [0x5a5ab0], al
jmp case.default.0x58c5b4
mov al, byte [ebp - 0x49]
mov byte [0x5a5ab4], al
jmp case.default.0x58c5b4
mov al, byte [ebp - 0x49]
mov byte [0x5a5ab8], al
jmp case.default.0x58c5b4
mov al, byte [ebp - 0x49]
mov byte [0x5a5abc], al
jmp case.default.0x58c5b4
mov al, byte [ebp - 0x49]
mov byte [0x5a5ac0], al
jmp case.default.0x58c5b4
mov al, byte [ebp - 0x49]
mov byte [0x5a5ac4], al
jmp case.default.0x58c5b4
mov al, byte [ebp - 0x49]
mov byte [0x5a5ac8], al
jmp case.default.0x58c5b4
mov al, byte [ebp - 0x49]
mov byte [0x5a5acc], al
jmp case.default.0x58c5b4
mov al, byte [ebp - 0x49]
mov byte [0x5a5ad0], al
jmp case.default.0x58c5b4
mov al, byte [ebp - 0x49]
mov byte [0x5a5ad4], al
jmp case.default.0x58c5b4
mov al, byte [ebp - 0x49]
mov byte [0x5a5ad8], al
jmp case.default.0x58c5b4
mov al, byte [ebp - 0x49]
mov byte [0x5a5adc], al
jmp case.default.0x58c5b4
mov al, byte [ebp - 0x49]
mov byte [0x5a5ae0], al
jmp case.default.0x58c5b4
mov al, byte [ebp - 0x49]
mov byte [0x5a5ae4], al
mov eax, dword [0x5ace9c]
mov edx, dword [ebp - 0x3c]
mov eax, dword [eax + edx*8]
mov edx, dword [ebp - 0x38]
lea edx, [edx + edx*4]
mov ecx, dword [0x5acea8]
cmp eax, dword [ecx + edx*8 + 0xc]
jne 0x58c6b6
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x40], eax
jmp 0x58c6c5
inc dword [ebp - 0x3c]
dec dword [ebp - 0x90]
jne 0x58c582
mov eax, dword [0x5aceac]
shl eax, 2
mov edx, dword [0x5aceb0]
mov byte [edx + eax*8], 1
mov eax, dword [0x5aceac]
shl eax, 2
mov edx, dword [0x5aceb0]
mov ecx, dword [ebp - 0x38]
mov dword [edx + eax*8 + 4], ecx
mov eax, dword [0x5aceac]
shl eax, 2
mov edx, dword [0x5aceb0]
mov ecx, dword [ebp - 0x40]
mov dword [edx + eax*8 + 8], ecx
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [0x5acea8]
mov eax, dword [edx + eax*8 + 8]
mov edx, dword [0x5a626c]
xor eax, dword [edx]
mov edx, dword [0x5aceac]
shl edx, 2
mov ecx, dword [0x5aceb0]
mov dword [ecx + edx*8 + 0xc], eax
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [0x5acea8]
mov eax, dword [edx + eax*8 + 0xc]
mov edx, dword [0x5a626c]
xor eax, dword [edx]
mov edx, dword [0x5aceac]
shl edx, 2
mov ecx, dword [0x5aceb0]
mov dword [ecx + edx*8 + 0x10], eax
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [0x5acea8]
mov eax, dword [edx + eax*8 + 0x10]
mov edx, dword [0x5a626c]
xor eax, dword [edx]
mov edx, dword [0x5aceac]
shl edx, 2
mov ecx, dword [0x5aceb0]
mov dword [ecx + edx*8 + 0x14], eax
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [0x5acea8]
mov eax, dword [edx + eax*8 + 0x14]
mov edx, dword [0x5a626c]
xor eax, dword [edx]
mov edx, dword [0x5aceac]
shl edx, 2
mov ecx, dword [0x5aceb0]
mov dword [ecx + edx*8 + 0x18], eax
mov eax, dword [0x5a6214]
cmp dword [eax], 0xffffffff
je 0x58c82a
mov eax, dword [0x5a6214]
mov eax, dword [eax]
cmp eax, dword [ebp - 0x38]
jne 0x58c82a
pushal
mov dword [0x5a5174], 0
mov ebx, dword [0x5a517c]
add ebx, 4
mov ecx, dword [ebp - 4]
cmp ecx, ebx
jb 0x58c829
mov esi, dword [0x5a5178]
cmp dword [0x5a5180], 0
je 0x58c829
cmp dword [0x5a5178], 0
je 0x58c829
mov edi, dword [0x5a5180]
sub ebx, 4
add esi, ebx
mov eax, dword [edi]
xor eax, dword [esi]
mov ebx, dword [edi + 4]
xor ebx, dword [esi + 4]
mov ecx, dword [edi + 8]
xor ecx, dword [esi + 8]
mov edx, dword [edi + 0xc]
xor edx, dword [esi + 0xc]
xor eax, ebx
xor ecx, edx
sub eax, ecx
jne 0x58c829
mov dword [0x5a5174], sub.user32.dll_GetSubMenu
popal
inc dword [0x5aceac]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x228]
mov eax, dword [eax + 0x130]
call fcn.0044f67c
mov dword [ebp - 0x48], eax
xor edx, edx
mov eax, dword [ebp - 0x48]
call fcn.0044f2fc
mov eax, dword [ebp - 0x48]
mov eax, dword [eax + 8]
xor edx, edx
mov ecx, dword [eax]
call dword [ecx + 0x34]
mov eax, dword [ebp - 0x48]
mov eax, dword [eax + 8]
xor edx, edx
mov ecx, dword [eax]
call dword [ecx + 0x34]
mov eax, dword [ebp - 0x48]
mov eax, dword [eax + 8]
xor edx, edx
mov ecx, dword [eax]
call dword [ecx + 0x34]
mov eax, dword [ebp - 0x48]
mov eax, dword [eax + 8]
xor edx, edx
mov ecx, dword [eax]
call dword [ecx + 0x34]
mov eax, dword [ebp - 0x48]
mov eax, dword [eax + 8]
xor edx, edx
mov ecx, dword [eax]
call dword [ecx + 0x34]
mov eax, dword [ebp - 0x48]
mov eax, dword [eax + 8]
xor edx, edx
mov ecx, dword [eax]
call dword [ecx + 0x34]
mov dl, 1
mov eax, dword [ebp - 0x48]
call fcn.0044f29c
lea eax, [ebp - 0x94]
mov edx, dword [ebp - 0x38]
lea edx, [edx + edx*4]
mov ecx, dword [0x5acea8]
lea edx, [ecx + edx*8]
mov ecx, 8
call fcn.00403c3c
mov eax, dword [ebp - 0x94]
mov edx, 0x58da08
call fcn.00403d9c
je 0x58c940
lea eax, [ebp - 0x94]
mov edx, dword [ebp - 0x38]
lea edx, [edx + edx*4]
mov ecx, dword [0x5acea8]
lea edx, [ecx + edx*8]
mov ecx, 8
call fcn.00403c3c
mov eax, dword [ebp - 0x94]
mov edx, 0x58da18
call fcn.00403d9c
je 0x58c940
lea eax, [ebp - 0x94]
mov edx, dword [ebp - 0x38]
lea edx, [edx + edx*4]
mov ecx, dword [0x5acea8]
lea edx, [ecx + edx*8]
mov ecx, 8
call fcn.00403c3c
mov eax, dword [ebp - 0x94]
mov edx, 0x58da28
call fcn.00403d9c
jne 0x58ca80
cmp byte [0x5a5944], 0
je 0x58ca80
mov eax, dword [0x5a5c6c]
mov al, byte [eax]
and al, 0xff
mov edx, dword [0x5a5c6c]
mov edx, dword [edx]
shr edx, 8
and dl, 0xff
xor al, dl
mov edx, dword [0x5a5c6c]
mov edx, dword [edx]
shr edx, 0x10
and dl, 0xff
xor al, dl
mov edx, dword [0x5a5c6c]
mov edx, dword [edx]
shr edx, 0x18
and dl, 0xff
xor al, dl
mov byte [ebp - 0x51], al
mov eax, dword [0x5a662c]
cmp dword [eax], 0
jne 0x58c9a9
cmp byte [ebp - 0x51], 0
jne 0x58c9a9
cmp dword [ebp - 0x64], 0
jne 0x58c9a9
cmp dword [ebp - 0x68], 0
je 0x58ca80
xor eax, eax
push ebp
push 0x58ca76
push dword fs:[eax]
mov dword fs:[eax], esp
mov al, byte [ebp - 0x64]
and al, 0xff
mov edx, dword [ebp - 0x64]
shr edx, 8
and dl, 0xff
xor al, dl
mov edx, dword [ebp - 0x64]
shr edx, 0x10
and dl, 0xff
xor al, dl
mov edx, dword [ebp - 0x64]
shr edx, 0x18
and dl, 0xff
xor al, dl
mov byte [ebp - 0x52], al
mov al, byte [ebp - 0x68]
and al, 0xff
mov edx, dword [ebp - 0x68]
shr edx, 8
and dl, 0xff
xor al, dl
mov edx, dword [ebp - 0x68]
shr edx, 0x10
and dl, 0xff
xor al, dl
mov edx, dword [ebp - 0x68]
shr edx, 0x18
and dl, 0xff
xor al, dl
mov byte [ebp - 0x53], al
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [0x5acea8]
mov eax, dword [edx + eax*8 + 0x10]
dec eax
test eax, eax
jl 0x58ca6c
inc eax
mov dword [ebp - 0x90], eax
mov dword [ebp - 0x44], 0
mov eax, dword [ebp - 0x38]
shl eax, 2
mov edx, dword [0x5aceb0]
mov eax, dword [edx + eax*8 + 0x1c]
mov edx, dword [ebp - 0x44]
mov al, byte [eax + edx]
xor al, byte [ebp - 0x51]
xor al, byte [ebp - 0x52]
xor al, byte [ebp - 0x53]
mov edx, dword [ebp - 0x38]
shl edx, 2
mov ecx, dword [0x5aceb0]
mov edx, dword [ecx + edx*8 + 0x1c]
mov ecx, dword [ebp - 0x44]
mov byte [edx + ecx], al
inc dword [ebp - 0x44]
dec dword [ebp - 0x90]
jne 0x58ca2c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x58ca80
inc dword [ebp - 0x38]
dec dword [ebp - 0x8c]
jne 0x58c3da
jmp 0x58cc25
xor eax, eax
mov dword [0x5a5aa8], eax
mov byte [0x5a5ae8], 0
mov eax, dword [0x5ace74]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
cdq
idiv dword [0x5ace5c]
imul dword [0x5ace5c]
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x24]
sub eax, dword [ebp - 0x5c]
je 0x58cc62
mov eax, dword [ebp - 0x5c]
add eax, dword [0x5ace5c]
mov dword [ebp - 0x24], eax
mov eax, dword [0x5aceb0]
mov eax, dword [eax + 0x18]
sub eax, dword [ebp - 0x24]
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
je 0x58ce8e
push 0x58da38
lea ecx, [ebp - 0x98]
mov edx, 8
mov eax, dword [ebp - 0x24]
call fcn.00407424
push dword [ebp - 0x98]
push 0x58da58
lea edx, [ebp - 0x9c]
mov eax, dword [ebp - 0x24]
call fcn.004073f4
push dword [ebp - 0x9c]
push 0x58da68
lea eax, [ebp - 0x94]
mov edx, 5
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
push 0x58da74
lea ecx, [ebp - 0x98]
mov edx, 8
mov eax, dword [ebp - 0x28]
call fcn.00407424
push dword [ebp - 0x98]
push 0x58da58
lea edx, [ebp - 0x9c]
mov eax, dword [ebp - 0x28]
call fcn.004073f4
push dword [ebp - 0x9c]
push 0x58da98
lea eax, [ebp - 0x94]
mov edx, 5
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
mov eax, dword [0x5acdcc]
add eax, dword [ebp - 0x24]
mov edx, dword [0x5a5aa8]
shl edx, 2
mov dword [edx*8 + 0x5aced0], eax
mov eax, dword [0x5a5aa8]
shl eax, 2
mov byte [eax*8 + 0x5aceb4], 1
mov eax, dword [0x5a5aa8]
shl eax, 2
mov dword [eax*8 + 0x5aceb8], 0xffffffff
mov eax, dword [0x5a5aa8]
shl eax, 2
mov dword [eax*8 + 0x5acebc], 0x8000
mov eax, dword [0x5a5aa8]
shl eax, 2
mov edx, dword [ebp - 0x28]
mov dword [eax*8 + 0x5acec0], edx
mov eax, dword [0x5a5aa8]
shl eax, 2
xor edx, edx
mov dword [eax*8 + 0x5acec4], edx
mov eax, dword [0x5a5aa8]
shl eax, 2
mov edx, dword [ebp - 0x28]
mov dword [eax*8 + 0x5acec8], edx
mov eax, dword [0x5a5aa8]
shl eax, 2
mov edx, dword [ebp - 0x24]
mov dword [eax*8 + 0x5acecc], edx
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x2a0]
mov eax, dword [eax + 0x130]
call fcn.0044f67c
mov dword [ebp - 0x48], eax
mov edx, 0x58daac
mov eax, dword [ebp - 0x48]
call fcn.0044f2fc
lea ecx, [ebp - 0x94]
mov eax, dword [0x5a5aa8]
shl eax, 2
mov eax, dword [eax*8 + 0x5acec8]
mov edx, 8
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x48]
mov eax, dword [eax + 8]
mov ecx, dword [eax]
call dword [ecx + 0x34]
lea ecx, [ebp - 0x94]
mov eax, dword [0x5a5aa8]
shl eax, 2
mov eax, dword [eax*8 + 0x5acecc]
mov edx, 8
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x48]
mov eax, dword [eax + 8]
mov ecx, dword [eax]
call dword [ecx + 0x34]
inc dword [0x5a5aa8]
mov dl, 1
mov eax, dword [ebp - 0x48]
call fcn.0044f29c
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x2a0]
mov dl, 1
call fcn.004239ac
mov byte [0x5a5ae8], 1
mov eax, dword [0x5acdd0]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x40], 0xffffffff
mov eax, dword [0x5acea4]
dec eax
cmp eax, 0
jl 0x58cf05
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x38]
shl eax, 2
mov edx, dword [0x5aceb0]
cmp dword [edx + eax*8 + 0x18], 0
je 0x58cefc
mov eax, dword [ebp - 0x38]
shl eax, 2
mov edx, dword [0x5aceb0]
cmp dword [edx + eax*8 + 0x14], 0
je 0x58cefc
mov eax, dword [ebp - 0x38]
shl eax, 2
mov edx, dword [0x5aceb0]
mov eax, dword [edx + eax*8 + 0x14]
mov edx, dword [ebp - 0x38]
shl edx, 2
mov ecx, dword [0x5aceb0]
add eax, dword [ecx + edx*8 + 0x18]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x40], eax
jmp 0x58cf05
dec dword [ebp - 0x38]
cmp dword [ebp - 0x38], 0xffffffff
jne 0x58ceab
mov eax, dword [0x5acdd0]
sub eax, dword [ebp - 0x2c]
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
jge 0x58d125
mov eax, dword [ebp - 0x2c]
sub eax, dword [0x5acdd0]
mov dword [0x5a5b64], eax
push 0x58dac4
lea edx, [ebp - 0x98]
mov eax, dword [ebp - 0x2c]
call fcn.004073f4
push dword [ebp - 0x98]
push 0x58da68
push 0x58dae8
lea edx, [ebp - 0x9c]
mov eax, dword [0x5acdd0]
call fcn.004073f4
push dword [ebp - 0x9c]
push 0x58da68
push 0x58d60c
lea eax, [ebp - 0x94]
mov edx, 7
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
push 0
push 0x58dac4
lea edx, [ebp - 0x98]
mov eax, dword [ebp - 0x2c]
call fcn.004073f4
push dword [ebp - 0x98]
push 0x58da68
push 0x58dae8
lea edx, [ebp - 0x9c]
mov eax, dword [0x5acdd0]
call fcn.004073f4
push dword [ebp - 0x9c]
push 0x58da68
push 0x58d60c
push 0x58db08
push 0x58db14
lea eax, [ebp - 0xa0]
mov edx, dword [ebp - 0x40]
lea edx, [edx + edx*4]
mov ecx, dword [0x5acea8]
lea edx, [ecx + edx*8]
mov ecx, 8
call fcn.00403c3c
push dword [ebp - 0xa0]
push 0x58d814
lea edx, [ebp - 0xa4]
mov eax, dword [ebp - 0x40]
call fcn.004073f4
push dword [ebp - 0xa4]
push 0x58db54
lea eax, [ebp - 0x94]
mov edx, 0xd
call fcn.00403d4c
mov eax, dword [ebp - 0x94]
mov cx, word [0x58d834]
xor edx, edx
call fcn.00440904
cmp eax, 6
jne 0x58d125
mov eax, dword [ebp - 0x40]
shl eax, 2
mov edx, dword [0x5aceb0]
mov ecx, dword [0x5acdd0]
sub ecx, dword [edx + eax*8 + 0x18]
mov eax, dword [ebp - 0x40]
shl eax, 2
mov edx, dword [0x5aceb0]
mov dword [edx + eax*8 + 0x14], ecx
push 0x58db60
lea eax, [ebp - 0x98]
mov edx, dword [ebp - 0x40]
lea edx, [edx + edx*4]
mov ecx, dword [0x5acea8]
lea edx, [ecx + edx*8]
mov ecx, 8
call fcn.00403c3c
push dword [ebp - 0x98]
push 0x58d814
lea edx, [ebp - 0x9c]
mov eax, dword [ebp - 0x40]
call fcn.004073f4
push dword [ebp - 0x9c]
push 0x58d968
mov eax, dword [ebp - 0x40]
shl eax, 2
mov edx, dword [0x5aceb0]
mov eax, dword [edx + eax*8 + 0x14]
lea ecx, [ebp - 0xa0]
mov edx, 8
call fcn.00407424
push dword [ebp - 0xa0]
push 0x58d974
mov eax, dword [ebp - 0x40]
shl eax, 2
mov edx, dword [0x5aceb0]
mov eax, dword [edx + eax*8 + 0x14]
lea edx, [ebp - 0xa4]
call fcn.004073f4
push dword [ebp - 0xa4]
push 0x58d980
lea eax, [ebp - 0x94]
mov edx, 9
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
mov byte [0x5a5aec], 0
cmp dword [ebp - 0x28], 0
jle 0x58d34a
push 0x58db9c
lea ecx, [ebp - 0x98]
mov edx, 8
mov eax, dword [ebp - 0x2c]
call fcn.00407424
push dword [ebp - 0x98]
push 0x58da58
lea edx, [ebp - 0x9c]
mov eax, dword [ebp - 0x2c]
call fcn.004073f4
push dword [ebp - 0x9c]
push 0x58da68
lea eax, [ebp - 0x94]
mov edx, 5
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
push 0x58dbbc
lea ecx, [ebp - 0x98]
mov edx, 8
mov eax, dword [ebp - 0x28]
call fcn.00407424
push dword [ebp - 0x98]
push 0x58da58
lea edx, [ebp - 0x9c]
mov eax, dword [ebp - 0x28]
call fcn.004073f4
push dword [ebp - 0x9c]
push 0x58da98
lea eax, [ebp - 0x94]
mov edx, 5
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
mov eax, dword [0x5acdcc]
add eax, dword [ebp - 0x2c]
mov edx, dword [0x5a5aa8]
shl edx, 2
mov dword [edx*8 + 0x5aced0], eax
mov eax, dword [0x5a5aa8]
shl eax, 2
mov byte [eax*8 + 0x5aceb4], 1
mov eax, dword [0x5a5aa8]
shl eax, 2
mov dword [eax*8 + 0x5aceb8], 0xffffffff
mov eax, dword [0x5a5aa8]
shl eax, 2
mov dword [eax*8 + 0x5acebc], 0x8001
mov eax, dword [0x5a5aa8]
shl eax, 2
mov edx, dword [ebp - 0x28]
mov dword [eax*8 + 0x5acec0], edx
mov eax, dword [0x5a5aa8]
shl eax, 2
xor edx, edx
mov dword [eax*8 + 0x5acec4], edx
mov eax, dword [0x5a5aa8]
shl eax, 2
mov edx, dword [ebp - 0x28]
mov dword [eax*8 + 0x5acec8], edx
mov eax, dword [0x5a5aa8]
shl eax, 2
mov edx, dword [ebp - 0x2c]
mov dword [eax*8 + 0x5acecc], edx
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x2a0]
mov eax, dword [eax + 0x130]
call fcn.0044f67c
mov dword [ebp - 0x48], eax
mov edx, 0x58dbe0
mov eax, dword [ebp - 0x48]
call fcn.0044f2fc
lea ecx, [ebp - 0x94]
mov eax, dword [0x5a5aa8]
shl eax, 2
mov eax, dword [eax*8 + 0x5acec8]
mov edx, 8
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x48]
mov eax, dword [eax + 8]
mov ecx, dword [eax]
call dword [ecx + 0x34]
lea ecx, [ebp - 0x94]
mov eax, dword [0x5a5aa8]
shl eax, 2
mov eax, dword [eax*8 + 0x5acecc]
mov edx, 8
call fcn.00407424
lea eax, [ebp - 0x94]
mov edx, 0x58d470
call fcn.00403c94
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x48]
mov eax, dword [eax + 8]
mov ecx, dword [eax]
call dword [ecx + 0x34]
inc dword [0x5a5aa8]
mov dl, 1
mov eax, dword [ebp - 0x48]
call fcn.0044f29c
mov eax, dword [ebp - 0x14]
mov eax, dword [eax + 0x2a0]
mov dl, 1
call fcn.004239ac
mov byte [0x5a5aec], 1
push 0x58dbf8
lea ecx, [ebp - 0x98]
mov edx, 8
mov eax, dword [0x5acdd0]
call fcn.00407424
push dword [ebp - 0x98]
push 0x58da58
lea edx, [ebp - 0x9c]
mov eax, dword [0x5acdd0]
call fcn.004073f4
push dword [ebp - 0x9c]
push 0x58da68
lea eax, [ebp - 0x94]
mov edx, 5
call fcn.00403d4c
mov edx, dword [ebp - 0x94]
mov eax, dword [ebp - 0x14]
call fcn.00581e4c
mov eax, dword [0x5acea8]
mov eax, dword [eax + 0x14]
mov dword [0x5a5b58], eax
mov eax, dword [0x5acea4]
dec eax
test eax, eax
jl 0x58d425
inc eax
mov dword [ebp - 0x8c], eax
mov dword [ebp - 0x38], 0
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [0x5acea8]
mov eax, dword [edx + eax*8 + 0x10]
cdq
idiv dword [0x5ace5c]
imul dword [0x5ace5c]
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x38]
lea eax, [eax + eax*4]
mov edx, dword [0x5acea8]
mov eax, dword [edx + eax*8 + 0x10]
sub eax, dword [ebp - 0x5c]
mov dword [ebp - 0x58], eax
cmp dword [ebp - 0x58], 0
je 0x58d411
mov eax, dword [0x5ace5c]
add dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x5c]
add dword [0x5a5b58], eax
inc dword [ebp - 0x38]
dec dword [ebp - 0x8c]
jne 0x58d3cd
mov byte [ebp - 0x15], 1
mov byte [0x5a59c0], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x58d45d
lea eax, [ebp - 0xa4]
mov edx, 5
call fcn.00403a34
lea eax, [ebp - 0x34]
call fcn.00403a10
ret