Function at 0x46cc20
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x5c
push ebx
push esi
push edi
xor esi, esi
push ebp
call fcn.004a7f30
mov eax, dword [eax + 4]
mov ecx, dword [eax + 0x20]
test ecx, ecx
je 0x46cc64
mov eax, dword [ecx]
call dword [eax + 0xc8]
test eax, eax
je 0x46cc64
mov ecx, eax
call fcn.004a7ff0
mov edi, eax
test edi, edi
je 0x46cc64
push 0x4b2c10
mov ecx, edi
call fcn.004a7e7c
test eax, eax
je 0x46cc64
mov esi, dword [edi + 0x40]
mov eax, dword [esp + 0x84]
mov byte [esp + 0x14], al
mov byte [esp + 0x13], ah
shr eax, 0x10
mov byte [esp + 0x12], al
mov eax, dword [esp + 0x88]
mov byte [esp + 0x17], al
mov byte [esp + 0x16], ah
shr eax, 0x10
test esi, esi
mov byte [esp + 0x15], al
je 0x46ccde
cmp word [esi + 0xfc], 0x18
je 0x46ccde
lea eax, [esp + 0x12]
push 1
lea ecx, [esp + 0x17]
push eax
lea edx, [esp + 0x1c]
push ecx
push edx
mov eax, dword [esi + 0xf0]
push eax
call fcn.004638c0
lea ecx, [esp + 0x29]
lea edx, [esp + 0x2a]
lea eax, [esp + 0x2b]
add esp, 0x14
push 1
push ecx
push edx
mov ecx, dword [esi + 0xf0]
push eax
push ecx
call fcn.004638c0
add esp, 0x14
xor ecx, ecx
xor eax, eax
mov cl, byte [esp + 0x12]
mov al, byte [esp + 0x15]
sub ecx, eax
xor eax, eax
mov al, byte [esp + 0x13]
mov dword [esp + 0x60], ecx
xor ecx, ecx
mov cl, byte [esp + 0x16]
sub eax, ecx
xor ecx, ecx
mov cl, byte [esp + 0x17]
mov edx, dword [esp + 0x70]
mov dword [esp + 0x64], eax
xor eax, eax
mov al, byte [esp + 0x14]
sub eax, ecx
lea ecx, [edx + edx*2]
mov dword [esp + 0x68], eax
lea eax, [ecx*8 + 0x1f]
cdq
and edx, 0x1f
mov ebx, dword [esp + 0x74]
add eax, edx
mov esi, ebx
sar eax, 5
mov ebp, dword [0x4c2588]
imul esi, eax
mov edi, eax
lea eax, [esi*4 + 0x28]
push eax
push 0x42
call ebp
push eax
mov ebp, dword [0x4c258c]
mov dword [esp + 0x44], eax
call ebp
mov ecx, dword [esp + 0x70]
xor edx, edx
shl esi, 2
mov dword [eax], 0x28
mov dword [eax + 4], ecx
mov dword [eax + 8], ebx
mov word [eax + 0xc], 1
mov word [eax + 0xe], 0x18
mov dword [eax + 0x10], edx
sub ecx, dword [esp + 0x78]
mov dword [eax + 0x14], esi
mov dword [esp + 0x20], ecx
dec ecx
mov dword [eax + 0x18], edx
sub ebx, dword [esp + 0x7c]
mov dword [eax + 0x1c], edx
mov dword [eax + 0x20], edx
mov dword [esp + 0x48], ecx
lea ecx, [ebx - 1]
mov dword [eax + 0x24], edx
lea edx, [edi*4]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x48]
mov esi, dword [esp + 0x78]
cmp ecx, esi
jg 0x46cdb5
mov ecx, esi
mov esi, dword [esp + 0x7c]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x3c]
cmp ecx, esi
jg 0x46cdc7
mov ecx, esi
mov dword [esp + 0x5c], ecx
movzx ecx, dx
mov edx, dword [esp + 0x78]
mov dword [esp + 0x28], ecx
imul ecx, dword [esp + 0x7c]
lea ebp, [edx + edx*2]
add ecx, ebp
add ecx, dword [eax]
add eax, ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x58], eax
mov ebp, eax
mov edi, eax
mov esi, eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x70]
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x7c]
cmp ebx, eax
jg 0x46ce16
mov ebx, eax
mov edx, dword [esp + 0x78]
mov dword [esp + 0x2c], ebx
cmp dword [esp + 0x44], edx
jle 0x46ce34
mov eax, dword [esp + 0x20]
mov dword [esp + 0x30], eax
shl eax, 8
cdq
idiv ebx
jmp 0x46ce48
mov eax, dword [esp + 0x78]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x2c]
shl eax, 8
cdq
idiv dword [esp + 0x78]
mov dword [esp + 0x1c], 0
cmp dword [esp + 0x5c], 0
mov dword [esp + 0x20], eax
jl 0x46cfeb
mov eax, dword [esp + 0x28]
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], 0
cmp dword [esp + 0x4c], 0
jl 0x46cfb1
mov eax, dword [esp + 0x30]
shl eax, 8
mov dword [esp + 0x28], eax
mov edx, dword [esp + 0x78]
cmp dword [esp + 0x44], edx
jg 0x46cec7
mov eax, dword [esp + 0x1c]
sub eax, dword [esp + 0x2c]
cdq
xor eax, edx
sub eax, edx
shl eax, 8
mov ebx, eax
mov eax, dword [esp + 0x34]
sub eax, dword [esp + 0x30]
cdq
xor eax, edx
sub eax, edx
mov ecx, eax
imul ecx, dword [esp + 0x20]
cmp ecx, ebx
jge 0x46cebe
shl eax, 8
jmp 0x46ceea
mov eax, ebx
cdq
idiv dword [esp + 0x2c]
jmp 0x46ceef
mov eax, dword [esp + 0x2c]
sub eax, dword [esp + 0x1c]
mov ecx, eax
imul ecx, dword [esp + 0x20]
cmp ecx, dword [esp + 0x28]
jge 0x46cee6
shl eax, 8
cdq
idiv dword [esp + 0x2c]
jmp 0x46ceef
mov eax, dword [esp + 0x28]
cdq
idiv dword [esp + 0x30]
mov ebx, eax
mov edx, dword [esp + 0x64]
imul ebx, dword [esp + 0x60]
imul edx, eax
sar ebx, 8
mov ecx, dword [esp + 0x68]
sar edx, 8
add bl, byte [esp + 0x15]
imul ecx, eax
sar ecx, 8
add dl, byte [esp + 0x16]
add cl, byte [esp + 0x17]
mov eax, dword [esp + 0x34]
cmp eax, dword [esp + 0x48]
jg 0x46cf61
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x3c], eax
jl 0x46cf4b
mov eax, dword [esp + 0x24]
inc dword [esp + 0x24]
mov byte [eax], bl
mov eax, dword [esp + 0x24]
inc dword [esp + 0x24]
mov byte [eax], dl
mov eax, dword [esp + 0x24]
inc dword [esp + 0x24]
mov byte [eax], cl
mov eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x7c]
jg 0x46cf61
mov byte [ebp], bl
inc ebp
inc ebp
mov byte [ebp - 1], dl
mov byte [ebp], cl
inc ebp
mov eax, dword [esp + 0x34]
cmp eax, dword [esp + 0x78]
jg 0x46cf97
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x3c], eax
jl 0x46cf81
mov byte [esi], bl
inc esi
inc esi
mov byte [esi - 1], dl
mov byte [esi], cl
sub esi, 5
mov eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x7c]
jg 0x46cf97
mov byte [edi], bl
inc edi
inc edi
mov byte [edi - 1], dl
mov byte [edi], cl
sub edi, 5
sub dword [esp + 0x28], 0x100
inc dword [esp + 0x34]
mov eax, dword [esp + 0x34]
cmp eax, dword [esp + 0x4c]
jle 0x46ce85
mov eax, dword [esp + 0x38]
add dword [esp + 0x50], eax
sub dword [esp + 0x54], eax
mov ecx, dword [esp + 0x50]
mov ebp, dword [esp + 0x54]
mov dword [esp + 0x24], ecx
sub dword [esp + 0x58], eax
mov edi, dword [esp + 0x58]
add dword [esp + 0x18], eax
mov esi, dword [esp + 0x18]
inc dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
cmp ecx, dword [esp + 0x5c]
jle 0x46ce67
mov edx, dword [esp + 0x40]
push edx
call dword [0x4c2590]
xor ax, ax
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x40]
pop ebp
pop edi
mov dword [ecx], edx
pop esi
pop ebx
add esp, 0x5c
ret