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

Disassembly:
sub esp, 0x9c
push esi
mov esi, ecx
mov dword [esp + 0x18], esi
mov eax, dword [esi + 0x44c]
test eax, eax
je 0x5038db
mov eax, dword [esp + 0xa4]
cmp eax, 1
jge 0x5032bc
mov eax, 1
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x14], eax
cmp ecx, 1
mov dword [esp + 0xc], 1
jl 0x5032d8
mov dword [esp + 0xc], ecx
fild dword [esi + 0x18]
push ebx
mov ebx, dword [esi + 0x444]
imul ebx, eax
fidiv dword [esp + 0x18]
push ebp
push edi
test bl, 3
mov dword [esp + 0x3c], ebx
fild dword [esi + 0x1c]
fidiv dword [esp + 0x18]
fstp dword [esp + 0x28]
je 0x503309
inc ebx
test bl, 3
jne 0x5032ff
mov dword [esp + 0x3c], ebx
fmul dword [0x19a6560]
call fcn.005296f8
fld dword [esp + 0x28]
fmul dword [0x19a6560]
mov dword [esp + 0x50], eax
call fcn.005296f8
mov edi, ebx
mov dword [esp + 0x58], eax
imul edi, dword [esp + 0x18]
push edi
mov dword [esp + 0x68], edi
call fcn.0052ab97
mov ebp, eax
mov eax, dword [esi + 0x44c]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x1c]
xor edx, edx
add esp, 4
cmp eax, edx
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x30], edx
mov dword [esp + 0x28], edx
jle 0x5038a9
mov ecx, dword [esp + 0x20]
xor eax, eax
test ecx, ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x40], eax
jle 0x50388e
shl edx, 8
imul edx, dword [esp + 0x58]
sar edx, 8
mov ecx, edx
sar ecx, 8
mov edi, ecx
mov dword [esp + 0x68], ecx
shl edi, 8
sub edx, edi
mov edi, dword [esi + 0x444]
mov dword [esp + 0x60], edx
jmp 0x5033a6
mov ecx, dword [esp + 0x68]
shl eax, 8
imul eax, dword [esp + 0x50]
mov edx, dword [esp + 0x34]
mov ebx, dword [esp + 0x30]
add edx, ebx
mov esi, dword [esi + 0x440]
sar eax, 8
mov dword [esp + 0x54], edx
mov edx, eax
sar edx, 8
mov ebx, edx
shl ebx, 8
sub eax, ebx
mov ebx, edi
mov dword [esp + 0x44], eax
mov eax, esi
imul eax, ecx
imul ebx, edx
add eax, ebx
mov ebx, eax
sub ebx, edi
mov ebp, ebx
sub ebp, esi
cmp ecx, 1
mov dword [esp + 0x6c], ebp
jl 0x5033f7
cmp edx, 1
jge 0x5033fb
mov dword [esp + 0x6c], eax
mov ebp, eax
sub ebp, esi
cmp ecx, 1
mov dword [esp + 0x70], ebp
jge 0x50340c
mov dword [esp + 0x70], eax
mov ebp, edi
sub ebp, esi
add ebp, eax
cmp ecx, 1
mov dword [esp + 0x74], ebp
jl 0x503427
mov ebp, dword [esp + 0x24]
mov ebp, dword [ebp + 0x18]
dec ebp
cmp edx, ebp
jl 0x50342b
mov dword [esp + 0x74], eax
lea ebp, [edi + edi]
sub ebp, esi
add ebp, eax
cmp ecx, 1
mov dword [esp + 0x78], ebp
jl 0x503449
mov ebp, dword [esp + 0x24]
mov ebp, dword [ebp + 0x18]
sub ebp, 2
cmp edx, ebp
jl 0x50344d
mov dword [esp + 0x78], eax
cmp edx, 1
mov dword [esp + 0x7c], ebx
jge 0x50345a
mov dword [esp + 0x7c], eax
lea ebx, [edi + eax]
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], ebx
mov ebx, dword [esp + 0x24]
mov ebx, dword [ebx + 0x18]
lea ebp, [ebx - 1]
cmp edx, ebp
mov dword [esp + 0x10], ebp
jl 0x503484
mov dword [esp + 0x84], eax
add ebx, 0xfffffffe
lea ebp, [eax + edi*2]
cmp edx, ebx
mov dword [esp + 0x88], ebp
mov dword [esp + 0x14], ebx
jl 0x5034a0
mov dword [esp + 0x88], eax
mov ebx, esi
sub ebx, edi
add ebx, eax
mov dword [esp + 0x8c], ebx
mov ebx, dword [esp + 0x24]
mov ebx, dword [ebx + 0x1c]
mov dword [esp + 0x2c], ebx
dec ebx
cmp ecx, ebx
jge 0x5034c2
cmp edx, 1
jge 0x5034c9
mov dword [esp + 0x8c], eax
lea ebp, [esi + eax]
cmp ecx, ebx
mov dword [esp + 0x90], ebp
jl 0x5034de
mov dword [esp + 0x90], eax
lea ebp, [esi + edi]
mov dword [esp + 0x1c], ebp
add ebp, eax
cmp ecx, ebx
mov dword [esp + 0x94], ebp
jge 0x5034f8
cmp edx, dword [esp + 0x10]
jl 0x5034ff
mov dword [esp + 0x94], eax
lea ebp, [esi + edi*2]
add ebp, eax
cmp ecx, ebx
mov dword [esp + 0x98], ebp
jge 0x503515
cmp edx, dword [esp + 0x14]
jl 0x50351c
mov dword [esp + 0x98], eax
add esi, esi
mov ebx, esi
sub ebx, edi
add ebx, eax
mov dword [esp + 0x9c], ebx
mov ebx, dword [esp + 0x2c]
add ebx, 0xfffffffe
cmp ecx, ebx
jge 0x50353b
cmp edx, 1
jge 0x503542
mov dword [esp + 0x9c], eax
lea ebp, [esi + eax]
cmp ecx, ebx
mov dword [esp + 0xa0], ebp
jl 0x503557
mov dword [esp + 0xa0], eax
add esi, edi
add esi, eax
cmp ecx, ebx
mov dword [esp + 0xa4], esi
jge 0x50356c
cmp edx, dword [esp + 0x10]
jl 0x503573
mov dword [esp + 0xa4], eax
mov esi, dword [esp + 0x1c]
cmp ecx, ebx
lea esi, [eax + esi*2]
mov dword [esp + 0xa8], esi
jge 0x50358b
cmp edx, dword [esp + 0x14]
jl 0x503592
mov dword [esp + 0xa8], eax
xor eax, eax
mov ecx, 0xffffff00
mov dword [esp + 0x1c], eax
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x2c], ecx
lea ebx, [esp + 0x6c]
mov eax, dword [esp + 0x60]
sub ecx, eax
xor eax, eax
lea edx, [ecx + 0x200]
lea edi, [ecx - 0x100]
test edx, edx
lea esi, [ecx + 0x100]
jle 0x5035d9
mov eax, edx
imul eax, edx
sar eax, 8
imul eax, edx
sar eax, 8
xor edx, edx
test esi, esi
jle 0x5035ed
mov edx, esi
imul edx, esi
sar edx, 8
imul edx, esi
sar edx, 8
xor esi, esi
test ecx, ecx
jle 0x503601
mov esi, ecx
imul esi, ecx
sar esi, 8
imul esi, ecx
sar esi, 8
xor ecx, ecx
test edi, edi
jle 0x503615
mov ecx, edi
imul ecx, edi
sar ecx, 8
imul ecx, edi
sar ecx, 8
shl ecx, 0xa
sar ecx, 8
shl edx, 0xa
sub eax, ecx
lea ecx, [esi + esi*2]
sar edx, 8
sub eax, edx
mov ebp, 0xffffff00
shl ecx, 9
shl eax, 8
and cl, 0
add eax, ecx
mov ecx, eax
mov eax, 0x2aaaaaab
imul ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x44]
mov ecx, ebp
sub ecx, eax
xor eax, eax
lea edx, [ecx + 0x200]
lea edi, [ecx - 0x100]
test edx, edx
lea esi, [ecx + 0x100]
jle 0x50367d
mov eax, edx
imul eax, edx
sar eax, 8
imul eax, edx
sar eax, 8
xor edx, edx
test esi, esi
jle 0x503691
mov edx, esi
imul edx, esi
sar edx, 8
imul edx, esi
sar edx, 8
xor esi, esi
test ecx, ecx
jle 0x5036a5
mov esi, ecx
imul esi, ecx
sar esi, 8
imul esi, ecx
sar esi, 8
xor ecx, ecx
test edi, edi
jle 0x5036b9
mov ecx, edi
imul ecx, edi
sar ecx, 8
imul ecx, edi
sar ecx, 8
shl ecx, 0xa
sar ecx, 8
shl edx, 0xa
sub eax, ecx
lea ecx, [esi + esi*2]
sar edx, 8
sub eax, edx
add ebp, 0x100
shl ecx, 9
shl eax, 8
and cl, 0
add ebx, 4
add eax, ecx
mov ecx, eax
mov eax, 0x2aaaaaab
imul ecx
mov ecx, dword [ebx - 4]
mov eax, edx
sar eax, 8
mov edx, eax
shr edx, 0x1f
add eax, edx
mov edx, dword [esp + 0x4c]
imul eax, dword [esp + 0x48]
shr ecx, 2
sar eax, 8
mov edi, dword [edx + ecx*4]
lea esi, [edx + ecx*4]
mov ecx, edi
xor edx, edx
shr ecx, 0x10
mov dh, cl
mov ecx, dword [esp + 0x1c]
imul edx, eax
sar edx, 8
add ecx, edx
xor edx, edx
mov dword [esp + 0x1c], ecx
mov ecx, edi
shr ecx, 8
mov dh, cl
mov ecx, dword [esp + 0x14]
imul edx, eax
sar edx, 8
add ecx, edx
mov dword [esp + 0x14], ecx
xor ecx, ecx
mov ch, byte [esi]
mov esi, dword [esp + 0x10]
imul ecx, eax
sar ecx, 8
add esi, ecx
cmp ebp, 0x300
mov dword [esp + 0x10], esi
jl 0x50364f
mov ecx, dword [esp + 0x2c]
add ecx, 0x100
cmp ecx, 0x300
mov dword [esp + 0x2c], ecx
jl 0x5035ad
mov eax, dword [esp + 0x1c]
mov edx, eax
shl edx, 5
add edx, eax
lea eax, [eax + edx*4]
shl eax, 1
mov ecx, eax
and ecx, 0xffff0000
cmp ecx, 0xff0000
jg 0x5037ac
test eax, 0xffff0000
jge 0x5037a4
xor bl, bl
jmp 0x5037b6
cmp ecx, 0xff0000
jle 0x5037b1
or bl, 0xff
jmp 0x5037b6
mov ebx, eax
sar ebx, 0x10
mov eax, dword [esp + 0x14]
mov ecx, eax
shl ecx, 5
add ecx, eax
lea eax, [eax + ecx*4]
shl eax, 1
mov ecx, eax
and ecx, 0xffff0000
cmp ecx, 0xff0000
jg 0x5037e9
test eax, 0xffff0000
jge 0x5037e1
xor al, al
jmp 0x5037f0
cmp ecx, 0xff0000
jle 0x5037ed
or al, 0xff
jmp 0x5037f0
sar eax, 0x10
mov ecx, dword [esp + 0x10]
mov edx, ecx
shl edx, 5
add edx, ecx
lea ecx, [ecx + edx*4]
shl ecx, 1
mov edx, ecx
and edx, 0xffff0000
cmp edx, 0xff0000
jg 0x503827
test ecx, 0xffff0000
jge 0x50381f
mov byte [esp + 0x38], 0
jmp 0x503835
cmp edx, 0xff0000
jle 0x50382e
mov byte [esp + 0x38], 0xff
jmp 0x503835
sar ecx, 0x10
mov byte [esp + 0x38], cl
mov edx, dword [esp + 0x38]
mov ebp, dword [esp + 0x5c]
xor ecx, ecx
mov esi, dword [esp + 0x24]
mov ch, bl
mov ebx, dword [esp + 0x34]
mov cl, al
mov eax, dword [esp + 0x54]
shl ecx, 8
and edx, 0xff
shr eax, 2
or ecx, edx
mov dword [ebp + eax*4], ecx
mov edi, dword [esi + 0x444]
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x20]
add ebx, edi
inc eax
cmp eax, ecx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x40], eax
jl 0x5033a2
mov ebx, dword [esp + 0x3c]
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x30]
add eax, ebx
inc edx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x18]
cmp edx, eax
mov dword [esp + 0x28], edx
jl 0x503365
mov edx, dword [esi + 0x44c]
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
push edx
mov dword [esi + 0x440], ebx
mov dword [esi + 0x18], eax
mov dword [esi + 0x1c], ecx
call fcn.0052aaae
add esp, 4
mov dword [esi + 0x448], edi
mov dword [esi + 0x44c], ebp
pop edi
pop ebp
pop ebx
pop esi
add esp, 0x9c
ret 8