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

Disassembly:
sub esp, 0x5c
and dword [esp + 0x10], 0
push ebp
mov ebp, ecx
mov dword [esp + 0x4c], edx
mov ecx, dword [esp + 0x70]
add ecx, 8
mov dword [esp + 0x3c], ebp
push esi
mov eax, dword [ebp + 0x110c]
lea esi, [ebp + 0xf7c]
sub eax, dword [esp + 0x84]
push edi
mov dword [esp + 0x10], esi
lea eax, [eax*4 + 0x504]
add eax, ebp
mov dword [esp + 0x4c], eax
mov eax, dword [ebp + 0x1108]
sub eax, dword [esp + 0x88]
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x98]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0xa4]
sar ecx, 6
test eax, eax
jle 0x4606f7
mov eax, dword [esp + 0xac]
mov edx, dword [ebp + 0x1110]
sar eax, 1
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xa8]
sar eax, 1
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x94]
push ebx
mov ebx, eax
cwde
mov dword [esp + 0x4c], eax
movsx eax, word [esp + 0xa0]
mov dword [esp + 0x64], eax
movsx eax, cx
sar ebx, 0x10
sar ecx, 0xf
inc ecx
mov dword [esp + 0x60], ebx
sar ecx, 1
mov dword [esp + 0x68], eax
mov dword [esp + 0x9c], ecx
mov ecx, dword [esp + 0x80]
imul eax, edx, 0xbb38435
add eax, 0x3619636b
mov dword [ebp + 0x1110], eax
movsx eax, word [ecx + 0x12]
mov dword [esp + 0x34], eax
movsx eax, word [ecx + 0x10]
mov dword [esp + 0x30], eax
movsx eax, word [ecx + 0xe]
mov dword [esp + 0x38], eax
movsx eax, word [ecx + 0xc]
mov dword [esp + 0x2c], eax
movsx eax, word [ecx + 0xa]
mov dword [esp + 0x28], eax
movsx eax, word [ecx + 8]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
movsx ebx, word [ecx + 6]
mov ebp, dword [esi - 0xc]
mov edi, dword [esi - 8]
mov edx, dword [eax - 4]
mov eax, dword [eax]
mov dword [esp + 0x3c], eax
movsx esi, word [ecx + 4]
movsx ecx, word [ecx + 2]
mov dword [esp + 0x24], ebx
movzx ebx, ax
sar eax, 0x10
mov dword [esp + 0x44], eax
movzx eax, dx
imul eax, ecx
mov dword [esp + 0x40], ebx
mov ebx, dword [esp + 0x14]
sar edx, 0x10
sar eax, 0x10
mov dword [esp + 0x10], eax
movzx eax, di
imul eax, esi
sar eax, 0x10
add dword [esp + 0x10], eax
movzx eax, bp
imul eax, dword [esp + 0x24]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x10]
movzx eax, ax
imul eax, dword [esp + 0x1c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x14]
movzx eax, ax
imul eax, dword [esp + 0x28]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x18]
movzx eax, ax
imul eax, dword [esp + 0x2c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x20]
movzx eax, ax
imul eax, dword [esp + 0x30]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x24]
movzx eax, ax
imul eax, dword [esp + 0x34]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x1c]
mov ebx, dword [esp + 0x80]
movzx eax, ax
imul eax, dword [esp + 0x38]
sar eax, 0x10
add dword [esp + 0x10], eax
movsx eax, word [ebx]
imul eax, dword [esp + 0x40]
sar eax, 0x10
add dword [esp + 0x10], eax
imul edx, ecx
mov ecx, dword [esp + 0x10]
sar edi, 0x10
add ecx, edx
imul edi, esi
mov esi, dword [esp + 0x14]
sar ebp, 0x10
imul ebp, dword [esp + 0x24]
mov eax, dword [esi - 0x10]
add ecx, edi
sar eax, 0x10
imul eax, dword [esp + 0x1c]
add ecx, ebp
mov edx, dword [esi - 0x1c]
mov ebp, dword [esp + 0x44]
sar edx, 0x10
imul edx, dword [esp + 0x38]
add ecx, eax
mov eax, dword [esi - 0x14]
sar eax, 0x10
imul eax, dword [esp + 0x28]
add edx, dword [esp + 0x54]
add ecx, eax
mov eax, dword [esi - 0x18]
sar eax, 0x10
imul eax, dword [esp + 0x2c]
add ecx, eax
mov eax, dword [esi - 0x20]
sar eax, 0x10
imul eax, dword [esp + 0x30]
add ecx, eax
mov eax, dword [esi - 0x24]
sar eax, 0x10
imul eax, dword [esp + 0x34]
add ecx, eax
movsx eax, word [ebx]
imul ebp, eax
add edx, ecx
add ebp, edx
cmp dword [esp + 0xb0], 0x10
mov dword [esp + 0x1c], ebp
jne 0x460285
mov ebp, dword [esi - 0x30]
mov ecx, ebx
mov edi, dword [esi - 0x2c]
movsx eax, word [ecx + 0x1e]
mov dword [esp + 0x30], eax
movsx eax, word [ecx + 0x1c]
mov dword [esp + 0x34], eax
movsx eax, word [ecx + 0x1a]
movsx ebx, word [ecx + 0x18]
movsx esi, word [ecx + 0x16]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x14]
movsx ecx, word [ecx + 0x14]
mov dword [esp + 0x2c], ebx
mov edx, dword [eax - 0x28]
movzx eax, dx
imul eax, ecx
sar edx, 0x10
imul edx, ecx
sar eax, 0x10
mov dword [esp + 0x10], eax
movzx eax, di
imul eax, esi
sar edi, 0x10
imul edi, esi
sar eax, 0x10
add dword [esp + 0x10], eax
movzx eax, bp
imul eax, ebx
mov ebx, dword [esp + 0x14]
sar ebp, 0x10
imul ebp, dword [esp + 0x2c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x34]
movzx eax, ax
imul eax, dword [esp + 0x38]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x38]
movzx eax, ax
imul eax, dword [esp + 0x34]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x3c]
movzx eax, ax
imul eax, dword [esp + 0x30]
sar eax, 0x10
add dword [esp + 0x10], eax
mov ecx, dword [esp + 0x10]
add ecx, edx
mov edx, ebx
add ecx, edi
add ecx, ebp
mov eax, dword [edx - 0x34]
sar eax, 0x10
imul eax, dword [esp + 0x38]
add ecx, eax
mov eax, dword [edx - 0x38]
sar eax, 0x10
imul eax, dword [esp + 0x34]
add ecx, eax
mov eax, dword [edx - 0x3c]
sar eax, 0x10
imul eax, dword [esp + 0x30]
add eax, dword [esp + 0x1c]
add eax, ecx
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x58], 2
jne 0x460362
mov edx, dword [esp + 0x84]
mov ecx, dword [esp + 0x18]
movsx eax, word [edx + 8]
movsx ebx, word [edx + 4]
movsx esi, word [edx + 2]
mov ebp, dword [ecx - 8]
mov edi, dword [ecx - 4]
mov dword [esp + 0x34], eax
movsx eax, word [edx + 6]
mov edx, dword [ecx]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x30], ebx
movsx ecx, word [eax]
movzx eax, dx
imul eax, ecx
sar edx, 0x10
imul edx, ecx
sar eax, 0x10
mov dword [esp + 0x10], eax
movzx eax, di
imul eax, esi
sar edi, 0x10
imul edi, esi
sar eax, 0x10
add dword [esp + 0x10], eax
movzx eax, bp
imul eax, ebx
mov ebx, dword [esp + 0x18]
sar ebp, 0x10
imul ebp, dword [esp + 0x30]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0xc]
movzx eax, ax
imul eax, dword [esp + 0x38]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [ebx - 0x10]
movzx eax, ax
imul eax, dword [esp + 0x34]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
add eax, edx
mov edx, ebx
add eax, edi
add eax, ebp
mov ecx, dword [edx - 0xc]
mov esi, dword [edx - 0x10]
sar esi, 0x10
imul esi, dword [esp + 0x34]
sar ecx, 0x10
imul ecx, dword [esp + 0x38]
add esi, 2
add eax, ecx
add esi, eax
add edx, 4
mov dword [esp + 0x24], esi
mov dword [esp + 0x18], edx
jmp 0x460367
and dword [esp + 0x24], 0
mov ebp, dword [esp + 0x48]
mov edx, dword [esp + 0x88]
mov eax, dword [esp + 0x3c]
push 2
mov edi, dword [ebp + 0x10c0]
mov dword [ebp + 0x10c0], eax
movsx ebx, word [edx]
mov eax, ebx
imul ebx, dword [esp + 0x48]
imul eax, dword [esp + 0x44]
pop ecx
mov dword [esp + 0x10], ecx
sar eax, 0x10
add eax, dword [esp + 0x5c]
add ebx, eax
mov eax, dword [esp + 0xac]
cmp eax, ecx
jle 0x46041e
lea eax, [ebp + 0x10c8]
mov ebp, eax
mov esi, dword [ebp - 4]
mov dword [ebp - 4], edi
movsx eax, word [edx + ecx*2 - 2]
movzx ecx, di
imul ecx, eax
sar edi, 0x10
imul edi, eax
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x88]
sar ecx, 0x10
add ebx, edi
mov edi, dword [ebp]
add ebx, ecx
mov dword [ebp], esi
mov ecx, dword [esp + 0x88]
lea ebp, [ebp + 8]
movsx eax, word [ecx + eax*2]
movzx ecx, si
imul ecx, eax
sar esi, 0x10
imul esi, eax
mov eax, dword [esp + 0xac]
sar ecx, 0x10
add ebx, esi
add ebx, ecx
mov ecx, dword [esp + 0x10]
add ecx, 2
mov dword [esp + 0x10], ecx
cmp ecx, eax
jl 0x4603b4
mov ebp, dword [esp + 0x48]
mov dword [ebp + eax*4 + 0x10bc], edi
movsx eax, word [edx + eax*2 - 2]
mov esi, dword [ebp + 0x1100]
movzx ecx, di
imul ecx, eax
sar edi, 0xf
and edi, 0xfffffffe
movzx edx, si
imul edi, eax
mov eax, edx
imul edx, dword [esp + 0x60]
sar ecx, 0xf
and ecx, 0xfffffffe
sar esi, 0x10
add ecx, edi
movsx edi, word [esp + 0x94]
imul eax, edi
sar edx, 0x10
sar eax, 0x10
add ecx, eax
mov eax, esi
imul esi, dword [esp + 0x60]
imul eax, edi
add ecx, eax
mov eax, dword [ebp + 0x110c]
mov eax, dword [ebp + eax*4 + 0x4fc]
lea edi, [ecx + ebx*2]
mov ebx, dword [esp + 0x1c]
movzx ecx, ax
imul ecx, dword [esp + 0x4c]
sar eax, 0x10
imul eax, dword [esp + 0x4c]
shl ebx, 2
mov dword [esp + 0x40], edi
sar ecx, 0x10
add ecx, edx
add ecx, eax
add ecx, esi
sub ebx, ecx
mov dword [esp + 0x3c], ecx
sub ebx, edi
cmp dword [esp + 0x8c], 0
jle 0x460527
mov eax, dword [esp + 0x50]
add ebx, ebx
mov ecx, dword [esp + 0x90]
movsx esi, cx
mov edi, dword [eax - 8]
add edi, dword [eax]
mov edx, dword [eax - 4]
add eax, 4
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x90]
sar eax, 0x10
movzx ecx, dx
imul ecx, eax
mov eax, dword [esp + 0x90]
sar eax, 0xf
and eax, 0xfffffffe
sar edx, 0x10
imul eax, edx
sar ecx, 0xf
and ecx, 0xfffffffe
sub ebx, ecx
sub ebx, eax
movzx eax, di
imul eax, esi
sar edi, 0xf
and edi, 0xfffffffe
imul edi, esi
sar eax, 0xf
and eax, 0xfffffffe
sub ebx, eax
sub ebx, edi
add ebx, dword [esp + 0x24]
sar ebx, 2
jmp 0x460529
sar ebx, 1
mov ecx, dword [esp + 0x20]
inc ebx
mov edx, dword [esp + 0x70]
sar ebx, 1
mov eax, dword [edx + ecx*4]
sub eax, ebx
sub ebx, dword [edx + ecx*4]
cmp dword [ebp + 0x1110], 0
mov ecx, dword [esp + 0xa4]
cmovge ebx, eax
mov eax, 0xffff8400
cmp ebx, eax
mov edx, ebx
cmovl edx, eax
mov eax, 0x7800
cmp ebx, eax
cmovg edx, eax
mov eax, edx
mov dword [esp + 0x44], edx
sub eax, ecx
sar eax, 0xa
test eax, eax
jle 0x460585
shl eax, 0xa
lea esi, [ecx - 0x50]
add esi, eax
movzx ebx, si
lea edi, [esi + 0x400]
jmp 0x460592
jne 0x460597
mov esi, ecx
movzx ebx, cx
lea edi, [ecx + 0x3b0]
movzx ecx, di
jmp 0x4605cc
cmp eax, 0xffffffff
jne 0x4605b0
lea esi, [ecx - 0x3b0]
mov edi, ecx
mov eax, esi
movzx ecx, cx
neg eax
movzx ebx, ax
jmp 0x4605cc
shl eax, 0xa
lea esi, [ecx + 0x50]
add esi, eax
mov eax, esi
neg eax
movzx ebx, ax
lea edi, [esi + 0x400]
mov eax, edi
neg eax
movzx ecx, ax
mov eax, dword [esp + 0x44]
sub edx, esi
sub eax, edi
movsx ecx, cx
imul ecx, dword [esp + 0x64]
cwde
imul eax, eax
movsx edx, dx
imul edx, edx
add ecx, eax
movsx eax, bx
movsx ebx, word [esp + 0xa0]
imul eax, ebx
mov ebx, dword [esp + 0x1c]
add eax, edx
mov edx, dword [esp + 0x74]
cmp ecx, eax
mov ecx, dword [esp + 0x20]
cmovge edi, esi
mov esi, 0xffff8000
mov eax, edi
shl edi, 4
sar eax, 9
inc eax
sar eax, 1
mov byte [ecx + edx], al
mov eax, edi
mov ecx, dword [esp + 0x24]
neg eax
cmp dword [ebp + 0x1110], 0
cmovge eax, edi
shl ebx, 4
mov edi, dword [esp + 0x20]
lea edx, [eax + ecx*2]
add ebx, edx
movzx ecx, bx
mov eax, ebx
imul ecx, dword [esp + 0x68]
sar eax, 0x10
imul eax, dword [esp + 0x68]
sar ecx, 0x10
add ecx, eax
mov eax, dword [esp + 0x9c]
imul eax, ebx
add ecx, eax
sar ecx, 7
inc ecx
sar ecx, 1
cmp ecx, esi
movzx eax, cx
cmovl eax, esi
mov esi, 0x7fff
movzx eax, ax
cmp ecx, esi
mov ecx, dword [esp + 0x78]
cmovg eax, esi
mov esi, dword [esp + 0x14]
add esi, 4
mov dword [esp + 0x14], esi
mov word [ecx + edi*2], ax
lea ecx, [edx + edx]
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x7c]
mov dword [esi], ebx
shl eax, 2
sub ebx, eax
mov eax, dword [esp + 0x3c]
shl eax, 2
mov dword [ebp + 0x1100], ebx
sub ebx, eax
mov eax, dword [ebp + 0x110c]
mov dword [ebp + eax*4 + 0x500], ebx
mov eax, dword [ebp + 0x1108]
mov dword [edx + eax*4], ecx
mov eax, dword [esp + 0x74]
inc dword [ebp + 0x110c]
inc dword [ebp + 0x1108]
movsx eax, byte [edi + eax]
add dword [ebp + 0x1110], eax
inc edi
mov edx, dword [ebp + 0x1110]
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x20], edi
cmp edi, eax
jl 0x45ffe4
pop ebx
push 0x20
pop ecx
lea esi, [eax*4 + 0xf00]
add esi, ebp
lea edi, [ebp + 0xf00]
rep movsd dword es:[edi], dword [esi]
pop edi
pop esi
pop ebp
add esp, 0x5c
ret