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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x804
mov eax, dword [0x533840]
xor eax, esp
mov dword [esp + 0x800], eax
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, ecx
mov dword [esp + 0x5c], eax
push edi
mov dword [esp + 0x64], edx
mov dword [esp + 0x44], esi
mov ecx, dword [esi + 0x2be0]
lea eax, [ecx*4]
add ecx, 0x106
push eax
lea eax, [esi + ecx*4]
push eax
lea eax, [esi + 0x418]
push eax
call fcn.004c6400
mov eax, dword [esi + 0x2be8]
add esp, 0xc
xor edx, edx
mov dword [esp + 0x18], eax
mov ecx, 0xfd70
lea edi, [eax - 1]
test edi, edi
jle 0x4310e0
nop dword [eax]
movsx eax, word [esi + edx*2 + 0x3522]
imul eax, ecx
sar eax, 0xf
inc eax
sar eax, 1
mov word [esi + edx*2 + 0x3522], ax
inc edx
imul eax, ecx, 0xfffffd70
sar eax, 0xf
inc eax
sar eax, 1
add ecx, eax
cmp edx, edi
jl 0x4310b0
mov eax, dword [esp + 0x18]
movsx eax, word [esi + eax*2 + 0x3520]
lea edx, [esp + 0x88]
imul eax, ecx
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x18], edx
sar eax, 0xf
inc eax
sar eax, 1
mov word [esi + ecx*2 + 0x3520], ax
mov ecx, 2
lea eax, [esi + 0x3564]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x14], eax
nop dword [eax + eax]
mov eax, dword [esi + 0x2be4]
xor ebx, ebx
mov edi, eax
test eax, eax
jle 0x43117d
nop
imul eax, ecx
add eax, ebx
mov edx, dword [esi + eax*4 + 0x1538]
mov eax, dword [esp + 0x14]
mov edi, dword [eax]
movsx ecx, di
sar edi, 0xf
inc edi
movzx eax, dx
sar edi, 1
imul edi, edx
imul eax, ecx
sar edx, 0x10
imul edx, ecx
mov ecx, dword [esp + 0x20]
sar eax, 0x10
add edi, eax
add edi, edx
mov edx, dword [esp + 0x18]
sar edi, 0xa
mov word [edx + ebx*2], di
inc ebx
mov eax, dword [esi + 0x2be4]
mov edi, eax
cmp ebx, eax
jl 0x431130
add dword [esp + 0x14], 4
lea edx, [edx + eax*2]
inc ecx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ecx
cmp ecx, 4
jl 0x431120
lea eax, [esp + 0x88]
push edi
push eax
lea edx, [esp + 0x30]
lea ecx, [esp + 0x2c]
call fcn.0042fce0
lea eax, [esp + 0x90]
lea eax, [eax + edi*2]
push edi
push eax
lea edx, [esp + 0x40]
lea ecx, [esp + 0x3c]
call fcn.0042fce0
mov edx, dword [esp + 0x34]
add esp, 0x10
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x2c]
sar edx, cl
mov ecx, dword [esp + 0x28]
sar eax, cl
cmp edx, eax
jge 0x4311f3
lea eax, [edi - 0x40]
xor ecx, ecx
lea eax, [edi + eax*2]
test eax, eax
cmovs eax, ecx
lea ecx, [esi + eax*4]
mov dword [esp + 0x34], ecx
jmp 0x43120d
mov eax, dword [esi + 0x2be0]
mov ecx, 0
sub eax, 0x80
cmovs eax, ecx
lea eax, [esi + eax*4]
mov dword [esp + 0x34], eax
movzx eax, word [esi + 0x354c]
mov ecx, 1
mov ebx, dword [esi + 0x350c]
cmp ebx, ecx
mov edx, dword [esi + 0x3510]
mov dword [esp + 0x1c], eax
mov eax, ebx
cmovg eax, ecx
movzx ecx, word [eax*2 + 0x522ec8]
mov dword [esp + 0x48], ecx
test edx, edx
jne 0x43124a
movzx eax, word [eax*2 + 0x522ecc]
jmp 0x431252
movzx eax, word [eax*2 + 0x522ec4]
movsx edi, ax
mov ecx, edi
test ebx, ebx
jne 0x43130a
mov dword [esp + 0x1c], 0x4000
test edx, edx
jne 0x4312bc
mov eax, 0x4000
mov ecx, 0xccd
sub ax, word [esi + 0x351a]
sub ax, word [esi + 0x3520]
sub ax, word [esi + 0x351e]
sub ax, word [esi + 0x351c]
sub ax, word [esi + 0x3518]
movzx eax, ax
cmp cx, ax
cmovg eax, ecx
movsx ecx, word [esi + 0x3558]
movzx eax, ax
imul ecx, eax
sar ecx, 0xe
movzx eax, cx
mov ecx, edi
mov dword [esp + 0x1c], eax
jmp 0x43130a
mov ecx, edi
cmp edx, 1
jne 0x43130a
push dword [esi + 0x2be8]
lea edx, [esi + 0x3522]
lea ecx, [esp + 0x28]
call fcn.0043a6f0
mov eax, dword [esp + 0x28]
mov ecx, 0x8000000
add esp, 4
cmp eax, ecx
cmovg eax, ecx
mov ecx, 0x400000
cmp eax, ecx
cmovl eax, ecx
shl eax, 3
movzx ecx, ax
imul ecx, edi
sar eax, 0x10
imul eax, edi
sar ecx, 0x10
add ecx, eax
sar ecx, 0xe
mov eax, dword [esi + 0x3548]
mov ebx, dword [esi + 0x3514]
mov edi, dword [esi + 0x2be0]
mov dword [esp + 0x20], eax
lea eax, [esp + 0x88]
sar ebx, 7
mov dword [esp + 0x18], eax
inc ebx
movsx eax, cx
sar ebx, 1
mov dword [esp + 0x40], edi
mov dword [esp + 0x4c], eax
mov dword [esp + 0x30], 4
mov edx, dword [esi + 0x2be4]
mov eax, edi
sub eax, ebx
mov dword [esp + 0x2c], 0
add eax, 0x108
lea ecx, [esi + eax*4]
mov eax, dword [esp + 0x1c]
movsx ebx, ax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x5c], ebx
test edx, edx
jle 0x431504
lea eax, [edi + 0x106]
lea eax, [esi + eax*4]
mov dword [esp + 0x28], eax
imul eax, dword [esp + 0x20], 0xbb38435
mov ebx, dword [ecx - 4]
mov edx, dword [ecx]
movsx edi, word [esi + 0x351a]
add dword [esp + 0x14], 4
add eax, 0x3619636b
mov dword [esp + 0x20], eax
mov eax, dword [ecx - 0x10]
mov dword [esp + 0x3c], eax
movsx eax, word [esi + 0x3520]
mov dword [esp + 0x54], eax
mov eax, dword [ecx - 0xc]
mov dword [esp + 0x38], eax
movsx eax, word [esi + 0x351e]
mov dword [esp + 0x50], eax
mov eax, dword [ecx - 8]
mov dword [esp + 0x1c], eax
movsx eax, word [esi + 0x351c]
movsx ecx, word [esi + 0x3518]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x34]
sar eax, 0x19
and eax, 0x7f
mov eax, dword [esi + eax*4 + 0x1538]
mov dword [esp + 0x58], eax
movzx eax, dx
imul eax, ecx
mov esi, dword [esp + 0x44]
sar edx, 0x10
imul edx, ecx
mov ecx, dword [esp + 0x1c]
sar eax, 0x10
mov dword [esp + 0x10], eax
movzx eax, bx
imul eax, edi
sar ecx, 0x10
sar ebx, 0x10
imul ebx, edi
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
movzx eax, ax
imul eax, dword [esp + 0x24]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x38]
movzx eax, ax
imul eax, dword [esp + 0x50]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esp + 0x3c]
movzx eax, ax
imul eax, dword [esp + 0x54]
sar eax, 0x10
add dword [esp + 0x10], eax
add dword [esp + 0x10], edx
movsx eax, word [esi + 0x351c]
mov edx, dword [esp + 0x10]
imul ecx, eax
add edx, ebx
movsx eax, word [esi + 0x351e]
mov ebx, dword [esp + 0x5c]
add edx, ecx
mov ecx, dword [esp + 0x38]
sar ecx, 0x10
imul ecx, eax
movsx eax, word [esi + 0x3520]
add edx, ecx
mov ecx, dword [esp + 0x3c]
sar ecx, 0x10
imul ecx, eax
add edx, ecx
mov ecx, dword [esp + 0x58]
movzx eax, cx
imul eax, ebx
sar edx, 3
inc edx
sar edx, 1
sar eax, 0xe
and eax, 0xfffffffc
mov edi, dword [esp + 0x40]
add edx, eax
sar ecx, 0xe
inc edi
and ecx, 0xfffffffc
mov dword [esp + 0x40], edi
imul ecx, ebx
add edx, ecx
mov ecx, dword [esp + 0x28]
mov eax, edx
shl eax, 6
mov dword [ecx], eax
add ecx, 4
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x18]
mov dword [ecx + eax*4], edx
inc eax
mov edx, dword [esi + 0x2be4]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x2c], eax
cmp eax, edx
jl 0x431382
mov eax, dword [esp + 0x18]
lea eax, [eax + edx*4]
mov edx, dword [esp + 0x48]
mov dword [esp + 0x18], eax
movsx eax, word [esi + 0x3518]
movsx ecx, dx
imul eax, ecx
sar eax, 0xf
mov word [esi + 0x3518], ax
movsx eax, word [esi + 0x351a]
imul eax, ecx
sar eax, 0xf
mov word [esi + 0x351a], ax
movsx eax, word [esi + 0x351c]
imul eax, ecx
sar eax, 0xf
mov word [esi + 0x351c], ax
movsx eax, word [esi + 0x351e]
imul eax, ecx
sar eax, 0xf
mov word [esi + 0x351e], ax
movsx eax, word [esi + 0x3520]
imul eax, ecx
sar eax, 0xf
mov word [esi + 0x3520], ax
mov eax, dword [esp + 0x4c]
mov edx, dword [esi + 0x3514]
imul eax, ebx
sar eax, 0xf
movzx eax, ax
mov dword [esp + 0x1c], eax
movsx eax, word [esi + 0x2bd8]
imul ebx, eax, 0x1200
movzx eax, dx
imul ecx, eax, 0x28f
mov eax, edx
sar eax, 0x10
imul eax, eax, 0x28f
sar ecx, 0x10
add ecx, edx
add eax, ecx
cmp eax, ebx
cmovl ebx, eax
mov dword [esi + 0x3514], ebx
sar ebx, 7
inc ebx
sar ebx, 1
sub dword [esp + 0x30], 1
jne 0x431344
mov eax, dword [esi + 0x2be8]
lea edi, [esp + 0x88]
add eax, eax
mov dword [esp + 0x48], ebx
push eax
lea eax, [esi + 0x3522]
mov dword [esp + 0x1c], edi
push eax
lea eax, [esp + 0x70]
push eax
call fcn.004c6400
mov ecx, 4
add esp, 0xc
mov dword [esp + 0x24], ecx
nop word [eax + eax]
mov eax, dword [esi + 0x2be4]
mov dword [esp + 0x34], 0
test eax, eax
jle 0x431859
mov ecx, dword [esp + 0x72]
movsx eax, cx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x38], eax
movsx eax, word [esp + 0x68]
mov dword [esp + 0x3c], eax
movsx eax, cx
mov ecx, dword [esp + 0x6a]
mov dword [esp + 0x40], eax
movsx eax, cx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x28], eax
movsx eax, cx
lea ecx, [esi + 0x1344]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x14], ecx
mov edx, dword [ecx]
mov ebx, dword [ecx + 4]
mov edi, dword [ecx - 0xc]
mov ecx, dword [ecx - 0x10]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x70]
movsx esi, cx
mov ecx, dword [esp + 0x30]
movzx eax, dx
imul eax, esi
sar edx, 0x10
sar eax, 0x10
mov dword [esp + 0x10], eax
movzx eax, cx
mov ecx, dword [esp + 0x78]
movsx esi, cx
imul eax, esi
mov ecx, dword [esp + 0x76]
movsx esi, cx
mov ecx, dword [esp + 0x6e]
sar eax, 0x10
add dword [esp + 0x10], eax
movzx eax, di
imul eax, esi
movsx esi, cx
mov ecx, dword [esp + 0x7a]
sar edi, 0x10
sar eax, 0x10
add dword [esp + 0x10], eax
movzx eax, bx
imul eax, esi
mov esi, dword [esp + 0x14]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esi + 8]
movzx eax, ax
imul eax, dword [esp + 0x2c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esi + 0xc]
movzx eax, ax
imul eax, dword [esp + 0x28]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esi - 8]
movzx eax, ax
imul eax, dword [esp + 0x40]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esi + 0x10]
movzx eax, ax
imul eax, dword [esp + 0x3c]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esi - 4]
movzx eax, ax
imul eax, dword [esp + 0x38]
sar eax, 0x10
add dword [esp + 0x10], eax
mov eax, dword [esi - 0x14]
movsx esi, cx
mov ecx, dword [esp + 0x70]
movzx eax, ax
imul eax, esi
sar eax, 0x10
add dword [esp + 0x10], eax
movsx eax, cx
mov ecx, dword [esp + 0x30]
imul edx, eax
sar ecx, 0x10
add dword [esp + 0x10], edx
mov edx, dword [esp + 0x78]
movsx eax, dx
mov edx, dword [esp + 0x10]
imul ecx, eax
add edx, ecx
mov ecx, dword [esp + 0x76]
movsx eax, cx
imul edi, eax
add edx, edi
sar ebx, 0x10
mov ecx, dword [esp + 0x6e]
mov edi, 0xa
movsx eax, cx
mov ecx, dword [esp + 0x14]
imul ebx, eax
mov eax, dword [ecx + 8]
sar eax, 0x10
imul eax, dword [esp + 0x2c]
add edx, ebx
add edx, eax
mov eax, dword [ecx + 0xc]
sar eax, 0x10
imul eax, dword [esp + 0x28]
add edx, eax
mov eax, dword [ecx - 8]
sar eax, 0x10
imul eax, dword [esp + 0x40]
add edx, eax
mov eax, dword [ecx + 0x10]
sar eax, 0x10
imul eax, dword [esp + 0x3c]
add edx, eax
mov eax, dword [ecx - 4]
sar eax, 0x10
imul eax, dword [esp + 0x38]
add edx, eax
mov eax, dword [ecx - 0x14]
sar eax, 0x10
imul eax, esi
mov esi, dword [esp + 0x44]
add edx, eax
mov eax, dword [esi + 0x2be8]
mov dword [esp + 0x10], edx
mov dword [esp + 0x4c], eax
cmp eax, edi
jle 0x431827
lea ebx, [ecx - 0x18]
mov esi, edx
mov edx, dword [ebx]
lea ebx, [ebx - 4]
movsx eax, word [esp + edi*2 + 0x68]
inc edi
movzx ecx, dx
sar edx, 0x10
imul ecx, eax
imul edx, eax
sar ecx, 0x10
add esi, edx
add esi, ecx
cmp edi, dword [esp + 0x4c]
jl 0x4317f3
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0x18]
add dword [edi + ebx*4], edx
mov eax, dword [edi + ebx*4]
inc ebx
shl eax, 4
mov dword [ecx + 0x14], eax
add ecx, 4
mov eax, dword [esi + 0x2be4]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x14], ecx
cmp ebx, eax
jl 0x431665
mov ecx, dword [esp + 0x24]
movups xmm0, xmmword [esi + eax*4 + 0x1318]
lea edi, [edi + eax*4]
sub ecx, 1
mov dword [esp + 0x18], edi
movups xmmword [esi + 0x1318], xmm0
mov dword [esp + 0x24], ecx
movups xmm0, xmmword [esi + eax*4 + 0x1328]
movups xmmword [esi + 0x1328], xmm0
movups xmm0, xmmword [esi + eax*4 + 0x1338]
movups xmmword [esi + 0x1338], xmm0
movups xmm0, xmmword [esi + eax*4 + 0x1348]
movups xmmword [esi + 0x1348], xmm0
jne 0x431610
xor ebx, ebx
cmp dword [esi + 0x2be0], ebx
jle 0x431920
nop dword [eax]
nop word [eax + eax]
mov edi, dword [esi + 0x3568]
mov edx, dword [esp + ebx*4 + 0x88]
movsx ecx, di
sar edi, 0xf
inc edi
movzx eax, dx
sar edi, 1
imul edi, edx
imul eax, ecx
sar edx, 0x10
imul edx, ecx
sar eax, 0x10
add edi, eax
add edi, edx
sar edi, 9
inc edi
sar edi, 1
cmp edi, 0x7fff
jle 0x431901
mov edi, 0x7fff
jmp 0x43190f
cmp edi, 0xffff8000
mov eax, 0xffff8000
cmovl edi, eax
mov eax, dword [esp + 0x60]
mov word [eax + ebx*2], di
inc ebx
cmp ebx, dword [esi + 0x2be0]
jl 0x4318c0
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x20]
mov dword [esi + 0x3548], eax
mov eax, dword [esp + 0x1c]
mov word [esi + 0x354c], ax
mov eax, dword [esp + 0x48]
mov dword [ecx], eax
mov dword [ecx + 4], eax
pop edi
mov dword [ecx + 8], eax
mov dword [ecx + 0xc], eax
mov ecx, dword [esp + 0x808]
pop esi
pop ebx
xor ecx, esp
call fcn.004c43a7
mov esp, ebp
pop ebp
ret