Function at 0x405590
Capabilities:
Enumerate pe sections

Disassembly:
sub esp, 0x2c
push ebx
push ebp
mov ebp, dword [esp + 0x40]
push esi
mov esi, dword [esp + 0x48]
imul esi, esi, 0x54
push esi
push ebp
call fcn.0041a0c0
xor ebx, ebx
add esp, 8
mov dword [esp + 0xc], eax
cmp eax, ebx
jne 0x4055e1
mov eax, dword [esp + 0x40]
push eax
call fcn.00404cf0
mov ecx, dword [str.HY000]
mov edx, dword [esp + 0x40]
push ecx
push 0x7d8
push edx
call fcn.00404510
add esp, 0x10
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x2c
ret
push edi
push esi
push ebx
push eax
call sub.MSVCR90.dll_memset
mov eax, dword [esp + 0x60]
add esp, 0xc
test eax, 0x200
je 0x4057db
mov eax, dword [esp + 0x44]
mov edi, dword [eax]
cmp edi, ebx
je 0x405915
mov ecx, dword [esp + 0x10]
mov eax, 0xffffffec
sub eax, ecx
lea esi, [ecx + 0x14]
mov dword [esp + 0x14], eax
jmp 0x405628
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
lea edx, [esi - 0x14]
cmp edx, ecx
jb 0x4057d1
lea ecx, [eax + esi]
mov eax, 0x30c30c31
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, dword [esp + 0x4c]
jae 0x4057d1
mov edx, dword [edi + 4]
xor ecx, ecx
cmp byte [esp + 0x50], cl
lea eax, [esp + 0x18]
setne cl
add ecx, 7
push ecx
push edx
push eax
call fcn.00405540
mov ecx, dword [edi + 4]
mov ebx, dword [esp + 0x24]
mov edx, dword [ecx]
push ebx
push edx
push ebp
call fcn.0041a350
mov dword [esi], eax
mov eax, dword [esp + 0x34]
mov ecx, dword [edi + 4]
mov edx, dword [ecx + 4]
push eax
push edx
push ebp
call fcn.0041a350
mov dword [esi - 4], eax
mov eax, dword [esp + 0x44]
mov ecx, dword [edi + 4]
mov edx, dword [ecx + 8]
push eax
push edx
push ebp
call fcn.0041a350
mov dword [esi - 0xc], eax
mov eax, dword [esp + 0x54]
mov ecx, dword [edi + 4]
mov edx, dword [ecx + 0xc]
push eax
push edx
push ebp
call fcn.0041a350
mov dword [esi - 8], eax
mov eax, dword [esp + 0x64]
mov ecx, dword [edi + 4]
mov edx, dword [ecx + 0x10]
push eax
push edx
push ebp
call fcn.0041a350
mov dword [esi - 0x14], eax
mov eax, dword [esp + 0x74]
mov ecx, dword [edi + 4]
mov edx, dword [ecx + 0x14]
add esp, 0x48
push eax
push edx
push ebp
call fcn.0041a350
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
mov dword [esi - 0x10], eax
mov eax, dword [esp + 0x28]
mov dword [esi + 0x20], eax
mov eax, dword [esp + 0x34]
mov dword [esi + 0x18], ecx
mov ecx, dword [esp + 0x38]
add esp, 0xc
cmp dword [esp + 0x30], 0xc
mov dword [esi + 0x24], ebx
mov dword [esi + 0x1c], edx
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], ecx
jne 0x4057af
mov edx, dword [edi + 4]
mov eax, dword [edx + 0x18]
movzx ecx, word [eax]
mov dword [esi + 0x34], ecx
mov edx, dword [eax + 2]
mov dword [esi + 8], edx
movzx ecx, byte [eax + 6]
mov dword [esi + 0x38], ecx
movzx edx, word [eax + 7]
mov dword [esi + 0x2c], edx
movzx eax, byte [eax + 9]
mov dword [esi + 0x30], eax
mov eax, ecx
cmp eax, 9
jg 0x405752
cmp eax, 7
jne 0x40575e
cmp eax, 0xd
je 0x40575e
cmp eax, 0xf6
jne 0x405765
or dword [esi + 0x2c], 0x8000
cmp byte [esp + 0x50], 0
je 0x40578f
mov eax, dword [edi + 4]
cmp dword [eax + 0x1c], 0
je 0x40578f
mov ebx, dword [esp + 0x34]
mov ecx, dword [eax + 0x1c]
push ebx
push ecx
push ebp
call fcn.0041a350
add esp, 0xc
mov dword [esi + 4], eax
mov dword [esi + 0x28], ebx
jmp 0x405796
mov dword [esi + 4], 0
mov dword [esi + 0xc], 0
mov edi, dword [edi]
add esi, 0x54
test edi, edi
jne 0x405620
jmp 0x405915
mov edx, dword [esp + 0x44]
push edx
call fcn.00404cf0
mov eax, dword [str.HY000]
mov ecx, dword [esp + 0x44]
push eax
push 0x7eb
push ecx
call fcn.00404510
add esp, 0x10
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x2c
ret
mov edx, dword [esp + 0x44]
mov edi, dword [edx]
cmp edi, ebx
je 0x405915
mov esi, dword [esp + 0x10]
xor ecx, ecx
cmp byte [esp + 0x50], cl
setne cl
and eax, 4
mov dword [esp + 0x14], eax
add ecx, 5
mov dword [esp + 0x4c], ecx
add esi, 0xc
mov edx, dword [esp + 0x4c]
mov eax, dword [edi + 4]
push edx
push eax
lea ecx, [esp + 0x20]
push ecx
call fcn.00405540
mov edx, dword [edi + 4]
mov eax, dword [edx]
push eax
push ebp
call fcn.0041a3c0
mov dword [esi - 4], eax
mov dword [esi], eax
mov ecx, dword [edi + 4]
mov edx, dword [ecx + 4]
push edx
push ebp
call fcn.0041a3c0
mov dword [esi - 0xc], eax
mov eax, dword [edi + 4]
mov eax, dword [eax + 8]
movzx ecx, byte [eax + 2]
movzx edx, byte [eax + 1]
movzx eax, byte [eax]
shl ecx, 8
add ecx, edx
shl ecx, 8
add ecx, eax
mov dword [esi + 0x10], ecx
mov ecx, dword [edi + 4]
mov edx, dword [ecx + 0xc]
movzx eax, byte [edx]
mov ecx, dword [esp + 0x38]
mov dword [esi + 0x40], eax
mov eax, 0x4852b2
mov dword [esi + 8], eax
mov dword [esi + 4], eax
mov eax, dword [esp + 0x34]
mov dword [esi + 0x2c], ebx
mov dword [esi + 0x28], ebx
mov dword [esi + 0x20], eax
mov dword [esi + 0x24], eax
mov dword [esi + 0x18], ecx
mov edx, dword [edi + 4]
mov eax, dword [edx + 0x10]
add esp, 0x1c
cmp dword [esp + 0x14], ebx
je 0x4058a8
movzx ecx, word [eax]
mov dword [esi + 0x34], ecx
mov edx, dword [edi + 4]
mov eax, dword [edx + 0x10]
movzx ecx, byte [eax + 2]
jmp 0x4058b8
movzx ecx, byte [eax]
mov dword [esi + 0x34], ecx
mov edx, dword [edi + 4]
mov eax, dword [edx + 0x10]
movzx ecx, byte [eax + 1]
mov eax, dword [esi + 0x40]
cmp eax, 9
mov dword [esi + 0x38], ecx
jg 0x4058c8
cmp eax, 7
jne 0x4058d4
cmp eax, 0xd
je 0x4058d4
cmp eax, 0xf6
jne 0x4058db
or dword [esi + 0x34], 0x8000
cmp byte [esp + 0x50], bl
je 0x405902
mov eax, dword [edi + 4]
cmp dword [eax + 0x14], ebx
je 0x405902
mov edx, dword [eax + 0x14]
push edx
push ebp
call fcn.0041a3c0
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x34]
add esp, 8
mov dword [esi + 0x30], eax
jmp 0x405905
mov dword [esi + 0xc], ebx
mov dword [esi + 0x14], ebx
mov edi, dword [edi]
add esi, 0x54
cmp edi, ebx
jne 0x405807
mov ecx, dword [esp + 0x44]
push ecx
call fcn.00404cf0
mov eax, dword [esp + 0x14]
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret