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

Disassembly:
sub esp, 0x12c
push ebx
mov ebx, dword [esp + 0x134]
test ebx, ebx
je 0x4702b0
mov eax, dword [0x628640]
push ebp
push esi
push edi
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0xac], ecx
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb0], edx
xor ecx, ecx
mov eax, 0x610b60
mov esi, 4
mov edx, 3
movsx edi, word [eax - 0x20]
mov dword [esp + ecx + 0x44], edi
movsx edi, word [eax]
mov dword [esp + ecx + 0x74], edi
add eax, 2
add ecx, esi
dec edx
jne 0x46fb1d
cmp eax, 0x610b72
jl 0x46fb18
mov eax, dword [0x610bf0]
mov ebp, dword [esp + 0x44]
shl eax, 0xc
mov dword [esp + 0x70], eax
mov eax, dword [0x610bf4]
shl eax, 0xc
mov edi, dword [esp + 0x50]
mov dword [esp + 0x6c], eax
mov eax, dword [0x610bf8]
xor ecx, ecx
shl eax, 0xc
test ebp, ebp
setl cl
xor edx, edx
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x5c]
mov dword [esp + 0x68], eax
test edi, edi
setl dl
xor eax, eax
mov dword [esp + 0x1c], edx
test ecx, ecx
setl al
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x48]
test eax, eax
mov eax, 2
jge 0x46fb9d
or dword [esp + 0x34], eax
mov ecx, dword [esp + 0x54]
test ecx, ecx
jge 0x46fba9
or dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x60]
test ecx, ecx
jge 0x46fbb5
or dword [esp + 0x28], eax
mov ecx, dword [esp + 0x4c]
test ecx, ecx
jge 0x46fbc1
or dword [esp + 0x34], esi
mov ecx, dword [esp + 0x58]
test ecx, ecx
jge 0x46fbcd
or dword [esp + 0x1c], esi
mov ecx, dword [esp + 0x64]
test ecx, ecx
jge 0x46fbd9
or dword [esp + 0x28], esi
mov ebp, dword [esp + 0x74]
mov edi, dword [esp + 0x80]
xor ecx, ecx
test ebp, ebp
setl cl
xor edx, edx
mov dword [esp + 0x20], ecx
test edi, edi
setl dl
mov dword [esp + 0x24], edx
mov edx, dword [esp + 0x8c]
xor ecx, ecx
test edx, edx
setl cl
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x78]
test ecx, ecx
jge 0x46fc18
or dword [esp + 0x20], eax
mov ecx, dword [esp + 0x84]
test ecx, ecx
jge 0x46fc27
or dword [esp + 0x24], eax
mov ecx, dword [esp + 0x90]
test ecx, ecx
jge 0x46fc36
or dword [esp + 0x2c], eax
mov eax, dword [esp + 0x7c]
test eax, eax
jge 0x46fc42
or dword [esp + 0x20], esi
mov eax, dword [esp + 0x88]
test eax, eax
jge 0x46fc51
or dword [esp + 0x24], esi
mov eax, dword [esp + 0x94]
test eax, eax
jge 0x46fc60
or dword [esp + 0x2c], esi
mov bp, word [ebx + 4]
mov eax, ebp
mov dword [esp + 0x10], ebp
and eax, 0xffff
test eax, 0x1001
mov dword [esp + 0x30], eax
jne 0x470291
mov eax, dword [ebx + 8]
mov esi, dword [esp + 0xac]
mov ecx, dword [ebx + 0xc]
mov edx, dword [ebx + 0x10]
sar eax, 0xc
sub eax, esi
mov esi, dword [esp + 0xb4]
mov edi, eax
mov eax, dword [esp + 0xb0]
sar ecx, 0xc
sar edx, 0xc
sub ecx, eax
sub edx, esi
mov eax, edi
mov esi, edx
cdq
xor eax, edx
mov dword [esp + 0x9c], edi
sub eax, edx
mov dword [esp + 0xa0], ecx
cmp eax, 0x7fff
mov dword [esp + 0xa4], esi
jg 0x470291
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x7fff
jg 0x470291
mov eax, esi
cdq
xor eax, edx
sub eax, edx
cmp eax, 0x7fff
jle 0x46fd03
mov eax, dword [esp + 0x30]
test ah, 0x20
je 0x470291
xor eax, eax
mov ebp, ecx
mov al, byte [ebx + 0x1f]
mov edx, eax
shl edx, 4
add edx, eax
xor eax, eax
mov ax, word [ebx + 0x1a]
mov edx, dword [edx*4 + 0x6b2454]
sar edi, 1
mov eax, dword [edx + eax*4]
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x98], eax
mov dword [esp + 0x38], edx
mov ecx, dword [eax + 8]
mov eax, dword [esp + 0x70]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x40], eax
mov al, byte [esp + 0x30]
sar ebp, 1
sar esi, 1
sar ecx, 0xd
test al, 2
je 0x46fdb0
fild dword [esp + 0x70]
shl ecx, 3
mov dword [esp + 0x14], ecx
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fmul dword [0x54f048]
call fcn.00529c7c
fild dword [esp + 0x6c]
mov dword [esp + 0x3c], eax
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fmul dword [0x54f048]
call fcn.00529c7c
fild dword [esp + 0x68]
mov dword [esp + 0x38], eax
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fmul dword [0x54f048]
call fcn.00529c7c
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x30]
test ah, 2
je 0x46fe1a
movsx eax, word [ebx + 0x18]
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x18], eax
movsx eax, word [ebx + 0x1a]
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x14], eax
movsx eax, word [ebx + 0x1c]
mov ebx, dword [esp + 0x18]
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x14]
cmp ebx, edx
jl 0x46fdf0
cmp ebx, eax
jl 0x46fdf4
mov edx, ebx
jmp 0x46fdf6
cmp edx, eax
jge 0x46fdf6
mov edx, eax
cmp edx, 0x1000
jge 0x46fe0e
test ebx, ebx
je 0x46fe1a
mov ebx, dword [esp + 0x14]
test ebx, ebx
je 0x46fe1a
test eax, eax
je 0x46fe1a
imul edx, ecx
sar edx, 0xc
mov dword [esp + 0x14], edx
mov ecx, edx
mov eax, dword [esp + 0x30]
neg ecx
shl ecx, 0xc
and eax, 0x2000
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
jne 0x46fe70
mov edx, ebp
mov eax, dword [esp + 0x3c]
imul edx, dword [esp + 0x48]
mov ecx, esi
add edx, eax
imul ecx, dword [esp + 0x4c]
mov eax, edi
add edx, ecx
imul eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x14]
add eax, edx
cmp eax, ecx
jge 0x46fe70
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x140]
or ah, 0x80
mov word [ebx + 4], ax
jmp 0x47029b
mov edx, ebp
mov eax, dword [esp + 0x38]
imul edx, dword [esp + 0x54]
mov ecx, esi
add edx, eax
imul ecx, dword [esp + 0x58]
mov eax, edi
add edx, ecx
imul eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
add eax, edx
cmp eax, ecx
jge 0x46feae
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x140]
or ah, 0x80
mov word [ebx + 4], ax
jmp 0x47029b
mov edx, ebp
mov ebx, dword [esp + 0x40]
imul edx, dword [esp + 0x60]
mov ecx, esi
add edx, ebx
imul ecx, dword [esp + 0x64]
mov ebx, edi
mov eax, dword [esp + 0x14]
imul ebx, dword [esp + 0x5c]
add edx, ecx
add ebx, edx
cmp ebx, eax
jge 0x46feec
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x140]
or ah, 0x80
mov word [ebx + 4], ax
jmp 0x47029b
mov ecx, dword [esp + 0x18]
test ecx, ecx
jne 0x46ff28
mov ecx, esi
mov edx, ebp
imul ecx, dword [esp + 0x7c]
imul edx, dword [esp + 0x78]
add ecx, edx
mov edx, edi
imul edx, dword [esp + 0x74]
add ecx, edx
cmp ecx, eax
jge 0x46ff28
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x140]
or ah, 0x80
mov word [ebx + 4], ax
jmp 0x47029b
mov ecx, esi
mov edx, ebp
imul ecx, dword [esp + 0x88]
imul edx, dword [esp + 0x84]
add ecx, edx
mov edx, edi
imul edx, dword [esp + 0x80]
add ecx, edx
cmp ecx, eax
jge 0x46ff65
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x140]
or ah, 0x80
mov word [ebx + 4], ax
jmp 0x47029b
imul esi, dword [esp + 0x94]
imul ebp, dword [esp + 0x90]
add esi, ebp
mov ebp, dword [esp + 0x8c]
imul edi, ebp
add esi, edi
cmp esi, eax
jge 0x46ff9e
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x140]
or ah, 0x80
mov word [ebx + 4], ax
jmp 0x47029b
mov ebx, dword [esp + 0x140]
mov eax, dword [ebx + 0x14]
test eax, eax
jne 0x470282
cmp word [ebx + 0x18], 0
jne 0x470282
test dword [esp + 0x30], 0x202
jne 0x470282
mov eax, dword [esp + 0x98]
mov edi, dword [esp + 0x9c]
add eax, 0xc
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov esi, dword [eax + 8]
mov eax, ecx
shl eax, 0x10
sar eax, 0x10
add eax, edi
sar eax, 1
sar ecx, 0x10
mov dword [esp + 0x11c], eax
mov dword [esp + 0xfc], eax
mov dword [esp + 0xdc], eax
mov dword [esp + 0xbc], eax
add ecx, edi
mov eax, edx
sar ecx, 1
shl eax, 0x10
mov dword [esp + 0x12c], ecx
mov dword [esp + 0x10c], ecx
mov dword [esp + 0xec], ecx
mov dword [esp + 0xcc], ecx
mov ecx, dword [esp + 0xa0]
sar eax, 0x10
add eax, ecx
sar eax, 1
mov dword [esp + 0x110], eax
mov dword [esp + 0x100], eax
mov dword [esp + 0xd0], eax
mov dword [esp + 0xc0], eax
mov eax, esi
sar edx, 0x10
shl eax, 0x10
add edx, ecx
mov ecx, dword [esp + 0xa4]
sar eax, 0x10
add eax, ecx
sar eax, 1
sar esi, 0x10
mov dword [esp + 0xf4], eax
mov dword [esp + 0xe4], eax
mov dword [esp + 0xd4], eax
mov dword [esp + 0xc4], eax
mov eax, dword [0x6150e8]
add esi, ecx
sar edx, 1
sar esi, 1
cmp eax, 1
mov dword [esp + 0x130], edx
mov dword [esp + 0x120], edx
mov dword [esp + 0xf0], edx
mov dword [esp + 0xe0], edx
mov dword [esp + 0x134], esi
mov dword [esp + 0x124], esi
mov dword [esp + 0x114], esi
mov dword [esp + 0x104], esi
jae 0x47012a
mov eax, dword [esp + 0x18]
test eax, eax
jne 0x47012a
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x3c]
shl eax, 4
mov edx, dword [esp + eax + 0xc0]
mov ecx, dword [esp + eax + 0xc4]
imul edx, dword [esp + 0x48]
imul ecx, dword [esp + 0x4c]
mov eax, dword [esp + eax + 0xbc]
add edx, edi
imul eax, dword [esp + 0x44]
add edx, ecx
add eax, edx
jns 0x47012a
mov eax, dword [esp + 0x10]
or ah, 0x80
mov word [ebx + 4], ax
jmp 0x47029b
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x38]
shl eax, 4
mov edx, dword [esp + eax + 0xc0]
mov ecx, dword [esp + eax + 0xc4]
imul edx, dword [esp + 0x54]
imul ecx, dword [esp + 0x58]
mov eax, dword [esp + eax + 0xbc]
add edx, edi
imul eax, dword [esp + 0x50]
add edx, ecx
add eax, edx
jns 0x470171
mov eax, dword [esp + 0x10]
or ah, 0x80
mov word [ebx + 4], ax
jmp 0x47029b
mov eax, dword [esp + 0x28]
mov edi, dword [esp + 0x40]
shl eax, 4
mov edx, dword [esp + eax + 0xc0]
mov ecx, dword [esp + eax + 0xc4]
imul edx, dword [esp + 0x60]
imul ecx, dword [esp + 0x64]
mov eax, dword [esp + eax + 0xbc]
add edx, edi
imul eax, dword [esp + 0x5c]
add edx, ecx
add eax, edx
jns 0x4701b8
mov eax, dword [esp + 0x10]
or ah, 0x80
mov word [ebx + 4], ax
jmp 0x47029b
mov eax, dword [esp + 0x20]
shl eax, 4
mov ecx, dword [esp + eax + 0xc4]
mov edx, dword [esp + eax + 0xc0]
imul ecx, dword [esp + 0x7c]
imul edx, dword [esp + 0x78]
mov eax, dword [esp + eax + 0xbc]
add ecx, edx
imul eax, dword [esp + 0x74]
add ecx, eax
jns 0x4701f9
mov eax, dword [esp + 0x10]
or ah, 0x80
mov word [ebx + 4], ax
jmp 0x47029b
mov eax, dword [esp + 0x24]
shl eax, 4
mov ecx, dword [esp + eax + 0xc4]
mov edx, dword [esp + eax + 0xc0]
imul ecx, dword [esp + 0x88]
imul edx, dword [esp + 0x84]
mov eax, dword [esp + eax + 0xbc]
add ecx, edx
imul eax, dword [esp + 0x80]
add ecx, eax
jns 0x470240
mov eax, dword [esp + 0x10]
or ah, 0x80
mov word [ebx + 4], ax
jmp 0x47029b
mov eax, dword [esp + 0x2c]
shl eax, 4
mov ecx, dword [esp + eax + 0xc4]
mov edx, dword [esp + eax + 0xc0]
imul ecx, dword [esp + 0x94]
imul edx, dword [esp + 0x90]
mov eax, dword [esp + eax + 0xbc]
add ecx, edx
imul eax, ebp
add ecx, eax
jns 0x470282
mov eax, dword [esp + 0x10]
or ah, 0x80
mov word [ebx + 4], ax
jmp 0x47029b
mov eax, dword [esp + 0x10]
and eax, 0x7fff
mov word [ebx + 4], ax
jmp 0x47029b
or ebp, 0x8000
mov word [ebx + 4], bp
mov ebx, dword [ebx + 0x20]
test ebx, ebx
mov dword [esp + 0x140], ebx
jne 0x46fc60
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x12c
ret