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

Disassembly:
sub esp, 0x7c
push ebx
mov ebx, dword [esp + 0x88]
push ebp
push esi
push edi
lea eax, [esp + 0x4c]
push eax
push 0x18
push ebx
call dword [sym.imp.GDI32.dll_GetObjectW]
mov ecx, dword [esp + 0x50]
lea eax, [ecx + ecx*2]
lea eax, [eax*8 + 0x1f]
cdq
and edx, 0x1f
add eax, edx
mov esi, eax
mov eax, dword [esp + 0x54]
sar esi, 5
add esi, esi
add esi, esi
mov dword [esp + 0x6c], eax
imul eax, esi
xor ebp, ebp
push eax
mov dword [esp + 0x68], 0x28
mov dword [esp + 0x6c], ecx
mov word [esp + 0x74], 1
mov word [esp + 0x76], 0x18
mov dword [esp + 0x78], ebp
mov dword [esp + 0x80], ebp
mov dword [esp + 0x84], ebp
mov dword [esp + 0x88], ebp
mov dword [esp + 0x8c], ebp
mov dword [esp + 0x7c], eax
call fcn.00475c60
mov edi, eax
mov eax, dword [esp + 0x6c]
lea ecx, [eax + eax*2]
add esp, 4
cmp esi, ecx
jne 0x4737d9
movzx eax, word [esp + 0x6c]
mov ecx, dword [esp + 0x90]
push ebp
lea edx, [esp + 0x68]
push edx
push edi
push eax
push ebp
push ebx
push ecx
call dword [sym.imp.GDI32.dll_GetDIBits]
jmp 0x473818
cmp dword [esp + 0x6c], ebp
mov eax, 1
jle 0x473831
mov ebx, edi
test eax, eax
je 0x47381c
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x90]
push 0
lea edx, [esp + 0x68]
push edx
push ebx
push 1
push ebp
push eax
push ecx
call dword [sym.imp.GDI32.dll_GetDIBits]
add ebp, 1
add ebx, esi
cmp ebp, dword [esp + 0x6c]
jl 0x4737e6
xor ebp, ebp
cmp eax, ebp
jne 0x473831
push edi
call fcn.00475cc0
add esp, 4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x7c
ret 0x10
fild dword [esp + 0x98]
fmul qword [0x5e4a08]
fdiv qword [0x5e4a00]
fst qword [esp + 0x44]
call fcn.005af8b0
fst qword [esp + 0x2c]
fstp qword [esp + 0x3c]
fld qword [esp + 0x44]
call fcn.005af780
fst qword [esp + 0x24]
cmp dword [esp + 0x9c], ebp
je 0x4738f9
fild dword [esp + 0x54]
fld st(0)
fld qword [esp + 0x3c]
fmul st(1), st(0)
fxch st(2)
fmul st(3)
fldz
fcom st(2)
fnstsw ax
fld qword [0x5e49f8]
test ah, 0x41
jne 0x473892
fmul st(3), st(0)
fxch st(2)
fcom st(1)
fnstsw ax
test ah, 5
jp 0x47389f
fmul st(2)
fild dword [esp + 0x50]
fld st(0)
fmulp st(7)
fxch st(6)
fcom st(2)
fnstsw ax
test ah, 5
jp 0x4738b4
fmul st(3)
fxch st(6)
fmulp st(5)
fxch st(1)
fcomp st(4)
fnstsw ax
test ah, 0x41
jne 0x4738f5
fxch st(3)
fmulp st(1)
fxch st(2)
fxch st(3)
faddp st(1)
fld qword [0x5debe8]
fadd st(1), st(0)
fxch st(1)
call fcn.005ac350
fxch st(1)
faddp st(2)
mov ebx, eax
mov dword [esp + 0x10], ebx
faddp st(1)
call fcn.005ac350
mov ecx, eax
mov dword [esp + 0x14], ecx
jmp 0x47390f
fstp st(1)
jmp 0x4738c9
mov edx, dword [esp + 0x50]
fstp st(0)
mov eax, dword [esp + 0x54]
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], eax
mov ebx, edx
mov ecx, eax
test bl, 3
je 0x47392a
lea eax, [ebx + 3]
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, eax
add eax, eax
mov dword [esp + 0x10], eax
mov ebx, eax
test cl, 3
je 0x473945
lea eax, [ecx + 3]
cdq
and edx, 3
add eax, edx
sar eax, 2
add eax, eax
add eax, eax
mov dword [esp + 0x14], eax
mov ecx, eax
lea eax, [ebx + ebx*2]
lea eax, [eax*8 + 0x1f]
shr eax, 5
imul eax, ecx
add eax, eax
add eax, eax
push eax
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], ecx
mov dword [esp + 0x7c], eax
call fcn.00475c60
mov ebp, eax
add esp, 4
test ebp, ebp
mov dword [esp + 0x3c], ebp
je 0x47381c
mov eax, ebx
fld qword [esp + 0x2c]
cdq
fld qword [esp + 0x24]
sub eax, edx
mov ebx, eax
mov eax, dword [esp + 0x14]
cdq
sub eax, edx
mov esi, eax
mov eax, dword [esp + 0x50]
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x54]
sar esi, 1
cdq
sub eax, edx
mov ecx, esi
neg ecx
sar ebx, 1
sar eax, 1
cmp ecx, esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x44], esi
mov dword [esp + 0x38], eax
mov dword [esp + 0x18], ecx
jge 0x473ac1
mov eax, ebx
neg eax
mov dword [esp + 0x2c], eax
lea eax, [ecx + esi]
imul eax, dword [esp + 0x10]
mov dword [esp + 0x24], eax
fild dword [esp + 0x18]
mov edx, dword [esp + 0x2c]
cmp edx, ebx
mov dword [esp + 0x14], edx
fld st(0)
fmul st(3)
fxch st(1)
fmul st(2)
jge 0x473aa6
lea ecx, [ebp + 1]
add eax, edx
add eax, ebx
mov ebx, ebp
lea esi, [ecx + eax*2]
sub ebp, ecx
add esi, eax
sub ebx, ecx
add ebp, 2
mov dword [esp + 0x1c], ebp
fild dword [esp + 0x14]
fld st(0)
fmul st(4)
fsub st(3)
call fcn.005ac350
fmul st(4)
mov ebp, eax
add ebp, dword [esp + 0x34]
fadd st(1)
call fcn.005ac350
add eax, dword [esp + 0x38]
js 0x473a6a
test ebp, ebp
jl 0x473a6a
mov ecx, dword [esp + 0x50]
cmp ebp, ecx
jge 0x473a6a
cmp eax, dword [esp + 0x54]
jge 0x473a6a
imul eax, ecx
add eax, ebp
lea eax, [eax + eax*2]
mov cl, byte [eax + edi]
mov byte [ebx + esi], cl
mov dl, byte [edi + eax + 1]
mov ecx, dword [esp + 0x1c]
mov byte [esi], dl
mov al, byte [edi + eax + 2]
mov byte [ecx + esi], al
jmp 0x473a7e
mov dl, byte [edi]
mov byte [ebx + esi], dl
mov al, byte [edi + 1]
mov edx, dword [esp + 0x1c]
mov byte [esi], al
mov cl, byte [edi + 2]
mov byte [edx + esi], cl
mov eax, dword [esp + 0x14]
add eax, 1
add esi, 3
cmp eax, dword [esp + 0x20]
mov dword [esp + 0x14], eax
jl 0x473a13
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0x44]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x24]
add eax, dword [esp + 0x10]
fstp st(1)
add ecx, 1
fstp st(0)
cmp ecx, esi
mov dword [esp + 0x18], ecx
mov dword [esp + 0x24], eax
jl 0x4739de
mov edx, dword [esp + 0x90]
fstp st(1)
push 0
fstp st(0)
lea eax, [esp + 0x68]
push eax
push ebp
push 4
mov ecx, eax
push ecx
push edx
call dword [sym.imp.GDI32.dll_CreateDIBitmap]
push edi
mov esi, eax
call fcn.00475cc0
push ebp
call fcn.00475cc0
add esp, 8
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x7c
ret 0x10