Function at 0x4635c0
Capabilities:
Packed with generic packer

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x14
push ebx
push esi
mov esi, dword [ebp + 8]
cmp byte [esi + 0x144], 0
push edi
je 0x4638e0
mov ecx, dword [esi]
mov eax, dword [esi + 0x94]
test eax, eax
mov edx, dword [ecx + 0x820]
mov ecx, dword [edx + 8]
je 0x4638e0
movzx ebx, ax
cmp ebx, dword [ecx + 8]
jae 0x4638e0
lea ebx, [ebx + ebx*4]
shl ebx, 5
add ebx, dword [ecx]
cmp dword [ebx + 0x9c], eax
jne 0x4638e0
mov edi, dword [esi + 4]
mov eax, edi
call fcn.0040cd10
mov dword [esp + 0xc], eax
mov eax, dword [edi + 0x138]
cmp dword [eax + 0x30], 3
jne 0x463668
mov eax, edi
mov ecx, dword [eax + 0x138]
mov ecx, dword [ecx + 0x38]
lea edx, [eax + 0xac]
call fcn.0041df00
test eax, eax
je 0x463668
mov edx, dword [eax + 0x28]
cmp edx, dword [esi + 0x28]
jne 0x463668
mov eax, dword [eax + 0x1c]
cmp eax, dword [esi + 0x1c]
jne 0x463668
push 0x80
mov edx, 0x80
jmp 0x4636fe
mov eax, dword [esp + 0xc]
call fcn.00463420
test al, al
je 0x4636ae
mov ecx, dword [esp + 0xc]
mov edx, dword [esi + 0x28]
mov eax, dword [esi + 4]
push ecx
push edx
push eax
mov eax, dword [esi + 0x1c]
call fcn.0040e020
test eax, eax
jne 0x4636ae
mov ecx, dword [esi + 4]
mov edx, dword [ecx + 0x5568]
push edx
mov esi, 0x5a
lea edi, [esp + 0x14]
call fcn.00512f20
mov esi, dword [ebp + 8]
add esp, 4
jmp 0x463709
cmp dword [esp + 0xc], 0x2f
jne 0x4636e0
cmp dword [esi + 0x24], 0x22
jne 0x4636e0
mov eax, dword [esi + 0x28]
mov ecx, dword [esi + 4]
push 0x2f
sub eax, 1
push eax
mov eax, dword [esi + 0x1c]
push ecx
call fcn.0040e020
test eax, eax
jne 0x4636e0
mov edx, dword [esi + 4]
mov eax, dword [edx + 0x5568]
push eax
jmp 0x463698
jmp 0x79d0dc
mov ecx, edx
lea eax, [esp + 0x14]
call fcn.005643d0
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov edi, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [ebx + 0x48], ecx
mov dword [ebx + 0x4c], edx
mov dword [ebx + 0x50], edi
mov dword [ebx + 0x54], eax
cmp byte [esi + 0x145], 0
je 0x46379e
push 0xc4
mov edx, 0xff
push 0xff
mov ecx, edx
lea eax, [esp + 0x18]
call fcn.005643f0
mov ecx, dword [eax]
mov dword [ebx + 0x6c], ecx
mov edx, dword [eax + 4]
mov dword [ebx + 0x70], edx
mov ecx, dword [eax + 8]
mov dword [ebx + 0x74], ecx
mov edx, dword [eax + 0xc]
mov dword [ebx + 0x78], edx
mov byte [ebx + 0x7c], 1
cmp dword [esi + 0x138], 0x30
jne 0x463856
push 0x5c
mov edx, 0xff
push 0xff
mov ecx, edx
lea eax, [esp + 0x18]
call fcn.005643f0
mov ecx, dword [eax]
mov dword [ebx + 0x6c], ecx
mov edx, dword [eax + 4]
mov dword [ebx + 0x70], edx
mov ecx, dword [eax + 8]
mov dword [ebx + 0x74], ecx
mov edx, dword [eax + 0xc]
mov dword [ebx + 0x78], edx
jmp 0x463856
mov eax, dword [esi + 0xbc]
test eax, eax
jle 0x4637fb
cdq
mov ecx, 0x32
idiv ecx
push 9
xor ecx, ecx
push 0x80
push 0
mov eax, edx
lea edx, [ecx + 0x32]
call fcn.00511c40
add esp, 0xc
push eax
mov edx, 0xff
push 0xff
mov ecx, edx
lea eax, [esp + 0x18]
call fcn.005643f0
mov edx, dword [eax]
mov dword [ebx + 0x6c], edx
mov ecx, dword [eax + 4]
mov dword [ebx + 0x70], ecx
mov edx, dword [eax + 8]
mov dword [ebx + 0x74], edx
mov eax, dword [eax + 0xc]
mov dword [ebx + 0x78], eax
mov byte [ebx + 0x7c], 1
jmp 0x463856
mov eax, dword [esi + 0xb8]
test eax, eax
jle 0x463852
cmp dword [esi + 0x138], 0x30
mov ecx, 0xff
jne 0x463818
mov ecx, 0x80
lea eax, [eax + eax*2]
test eax, eax
jg 0x463823
xor ecx, ecx
jmp 0x463829
cmp eax, ecx
jge 0x463829
mov ecx, eax
push ecx
mov edx, ecx
lea eax, [esp + 0x14]
call fcn.005643d0
mov ecx, dword [eax]
mov dword [ebx + 0x6c], ecx
mov edx, dword [eax + 4]
mov dword [ebx + 0x70], edx
mov ecx, dword [eax + 8]
mov dword [ebx + 0x74], ecx
mov edx, dword [eax + 0xc]
mov dword [ebx + 0x78], edx
mov byte [ebx + 0x7c], 1
jmp 0x463856
mov byte [ebx + 0x7c], 0
mov esi, dword [esi + 0xbc]
test esi, esi
jle 0x4638d2
mov eax, esi
cdq
mov ecx, 0x32
idiv ecx
push 9
xor ecx, ecx
push 0x80
push 0
mov eax, edx
lea edx, [ecx + 0x32]
call fcn.00511c40
add esp, 0xc
push eax
mov edx, 0xff
push 0xff
mov ecx, edx
lea eax, [esp + 0x18]
call fcn.005643f0
mov edx, dword [eax]
mov dword [ebx + 0x80], edx
mov ecx, dword [eax + 4]
mov dword [ebx + 0x84], ecx
mov edx, dword [eax + 8]
mov dword [ebx + 0x88], edx
mov eax, dword [eax + 0xc]
mov ecx, ebx
mov dword [ebx + 0x8c], eax
mov byte [ebx + 0x90], 1
call fcn.00473ae0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov ecx, ebx
mov byte [ebx + 0x90], 0
call fcn.00473ae0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4