Function at 0x437cc0
Capabilities:
Packed with generic packer

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
push edi
call fcn.0043a7a0
mov eax, dword [0x4ce6a4]
add esp, 4
test eax, eax
je 0x437e9a
mov eax, dword [0x4ce5e8]
xor esi, esi
test eax, eax
jle 0x437d1a
lea ecx, [ecx]
mov eax, dword [esi*4 + 0x4ce620]
test eax, eax
je 0x437d10
push edi
push esi
push 1
call fcn.004372d0
add esp, 0xc
test eax, eax
mov dword [0x4ce8c4], eax
jge 0x437d1a
mov eax, dword [0x4ce5e8]
inc esi
cmp esi, eax
jl 0x437cf0
cmp esi, dword [0x4ce5e8]
mov eax, dword [0x494184]
lea ecx, [eax + 0x494080]
jne 0x437d48
push edi
push ecx
call dword [0x45e1a8]
push 2
call fcn.0043abd0
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, esi
imul edx, edx, 0x41
add edx, 0x4ce3e0
push edx
push ecx
call dword [0x45e1a8]
push str..TCD
push 0x494080
call dword [0x45e094]
push 0
push 0x80
push 3
push 0
push 1
push 0x80000000
push 0x494080
call dword [0x45e078]
cmp eax, 0xffffffff
mov dword [0x4ce97c], eax
je 0x437d35
mov ecx, dword [0x4ce8c4]
push 0
lea esi, [esi + esi*8]
mov edx, dword [esi*4 + 0x4cde80]
mov edx, dword [edx + ecx*4]
push 0
push edx
push eax
call dword [0x45e060]
mov eax, dword [esi*4 + 0x4cde80]
mov ecx, dword [0x4ce8c4]
mov edi, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov eax, dword [ecx + 4]
sub eax, edi
push eax
push 1
mov dword [0x4ce968], eax
call fcn.0043aec0
mov edx, dword [0x4ce968]
add esp, 8
push 0
push 0x4ce964
mov esi, eax
mov eax, dword [0x4ce97c]
push edx
push esi
push eax
mov dword [ebp - 0x10], esi
call dword [0x45e068]
mov ecx, dword [0x4ce97c]
push ecx
call dword [0x45e05c]
mov edi, dword [esi]
lea edx, [edi + 0x20]
push edx
push 0
mov dword [ebp - 8], edi
call fcn.0043aec0
push eax
push 1
mov dword [ebp - 4], eax
call fcn.0043b010
push edi
push eax
add esi, 4
push esi
mov dword [ebp - 0xc], eax
call fcn.00436980
add esp, 0x1c
pushal
pushfd
push es
cld
mov ax, ds
mov es, ax
mov esi, dword [ebp - 0xc]
mov ecx, dword [ebp - 8]
mov edx, dword [ebp - 8]
shr ecx, 2
je 0x437e62
mov eax, dword [esi]
ror al, 1
ror ah, 1
ror eax, 0x10
ror al, 1
ror ah, 1
ror eax, 0x10
mov dword [esi], eax
add esi, 4
dec ecx
jne 0x437e4a
and edx, 3
je 0x437e71
mov al, byte [esi]
ror al, 1
mov byte [esi], al
inc esi
dec edx
jne 0x437e62
pop es
popfd
popal
mov eax, dword [ebp - 0x10]
push eax
push 0x8004
call fcn.0043b010
mov ecx, dword [ebp - 4]
push ecx
push 2
call fcn.0043b010
mov eax, dword [ebp - 4]
add esp, 0x10
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [0x494184]
push edi
lea eax, [edx + 0x494080]
push eax
call dword [0x45e1a8]
push str..TSF
push 0x494080
call dword [0x45e094]
push 0
push 0x80
push 3
push 0
push 1
push 0x80000000
push 0x494080
call dword [0x45e078]
cmp eax, 0xffffffff
mov dword [0x4ce97c], eax
je 0x437d35
push 0
push eax
call dword [0x45e074]
mov dword [0x4ce968], eax
add eax, 0x20
push eax
push 0
call fcn.0043aec0
mov esi, eax
push esi
push 1
mov dword [ebp - 4], esi
call fcn.0043b010
mov ecx, dword [0x4ce968]
mov edx, dword [0x4ce97c]
add esp, 0x10
push 0
push 0x4ce964
push ecx
push eax
push edx
call dword [0x45e068]
mov eax, dword [0x4ce97c]
push eax
call dword [0x45e05c]
push esi
push 2
call fcn.0043b010
add esp, 8
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret