Function at 0x473f40
Capabilities:
Print debug messages
Terminate process

Disassembly:
sub esp, 8
xor eax, eax
cmp dword [esp + 0x1c], 3
push ebx
setne al
push ebp
push esi
push edi
push 9
mov edi, ecx
sub eax, 1
and eax, 4
mov dword [esp + 0x18], eax
call fcn.00472e10
mov ebx, dword [esp + 0x20]
cmp ebx, 1
mov ebp, dword [esp + 0x1c]
mov dword [ebp], eax
mov ecx, edi
jne 0x473f7a
push 5
jmp 0x473f7c
push 3
call fcn.00472e70
test ebx, ebx
mov dword [ebp + 4], eax
jle 0x473fb1
lea esi, [ebp + 0x70]
jmp 0x473f90
push 4
mov ecx, edi
mov dword [esi - 0x68], 0xffffffff
call fcn.00472e70
mov dword [esi], eax
add esi, 0xd0
sub ebx, 1
jne 0x473f90
mov ebx, dword [esp + 0x20]
lea esi, [ebp + 0x10]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x10], esi
test ebx, ebx
mov dword [esp + 0x2c], 0
jle 0x474162
push 0xc
mov ecx, edi
call fcn.00472e10
push 9
mov ecx, edi
mov dword [esi - 4], eax
call fcn.00472e70
cmp eax, 0x120
mov dword [esi], eax
jbe 0x473fff
push str.big_values_too_large__n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov dword [esi], 0x120
push 8
mov ecx, edi
call fcn.00472e70
mov ecx, dword [esp + 0x14]
sub ecx, eax
cmp dword [esp + 0x24], 0
lea eax, [edi + ecx*4 + 0xed18]
mov dword [esi + 0x5c], eax
je 0x474025
add eax, 8
mov dword [esi + 0x5c], eax
push 4
mov ecx, edi
call fcn.00472e70
mov ecx, edi
mov dword [esi + 4], eax
call fcn.004733f0
test eax, eax
je 0x4740b8
push 2
mov ecx, edi
call fcn.00472e70
mov ecx, edi
mov dword [esi + 8], eax
call fcn.004733f0
push 5
mov ecx, edi
mov dword [esi + 0xc], eax
call fcn.00472e70
push 5
mov ecx, edi
mov dword [esi + 0x10], eax
call fcn.00472e70
mov dword [esi + 0x14], eax
mov dword [esi + 0x18], 0
lea ebx, [esi + 0x50]
mov ebp, 3
lea esp, [esp]
push 3
mov ecx, edi
call fcn.00472e70
mov edx, dword [esi + 0x5c]
add eax, eax
add eax, eax
add eax, eax
lea eax, [edx + eax*4]
mov dword [ebx], eax
add ebx, 4
sub ebp, 1
jne 0x474080
cmp dword [esi + 8], ebp
je 0x47418b
mov dword [esi + 0x3c], 0x12
mov dword [esi + 0x40], 0x120
jmp 0x474125
lea ebx, [esi + 0x10]
mov ebp, 3
push 5
mov ecx, edi
call fcn.00472e70
mov dword [ebx], eax
add ebx, 4
sub ebp, 1
jne 0x4740c0
push 4
mov ecx, edi
call fcn.00472e70
push 3
mov ecx, edi
mov ebx, eax
call fcn.00472e70
mov ecx, dword [esp + 0x28]
lea ecx, [ecx + ecx*8]
add ecx, ecx
add ecx, ecx
add ecx, ecx
lea edx, [ecx + ebx]
mov dx, word [edx*2 + 0x4dc44a]
sar dx, 1
add ecx, eax
movsx edx, dx
add ecx, ebx
mov dword [esi + 0x3c], edx
mov ax, word [ecx*2 + 0x4dc44c]
sar ax, 1
movsx ecx, ax
xor eax, eax
mov dword [esi + 0x40], ecx
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
mov ecx, edi
call fcn.004733f0
mov ecx, edi
mov dword [esi + 0x44], eax
call fcn.004733f0
mov ecx, edi
mov dword [esi + 0x48], eax
call fcn.004733f0
mov dword [esi + 0x4c], eax
mov eax, dword [esp + 0x2c]
add eax, 1
add esi, 0xd0
cmp eax, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
jl 0x473fd0
mov ebx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x10]
add eax, 1
add esi, 0x68
cmp eax, 2
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], esi
jl 0x473fc0
pop edi
pop esi
pop ebp
pop ebx
add esp, 8
ret 0x14
push 0x4c0698
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push 1
call dword [sym.imp.MSVCR80.dll_exit]
int3