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

Disassembly:
sub esp, 0x1e4
push ebx
mov ebx, ecx
push ebp
push esi
mov eax, dword [ebx + 0x19da0]
push edi
push eax
call dword [sym.imp.USER32.dll_GetDC]
push eax
mov dword [esp + 0x40], eax
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov esi, dword [esp + 0x1fc]
mov dword [esp + 0x5c], eax
push esi
push eax
call dword [sym.imp.GDI32.dll_SelectObject]
lea ecx, [esp + 0x17c]
mov dword [ebx + 0x19fb4], eax
push ecx
push 0x18
push esi
call dword [sym.imp.GDI32.dll_GetObjectA]
mov eax, dword [esp + 0x200]
mov edx, dword [esp + 0x184]
fld qword [0xc459f0]
fmul qword [ebx + eax*8 + 0x163b8]
mov ebp, dword [esp + 0x180]
mov dword [esp + 0x58], edx
lea ecx, [esp + 0x134]
lea edx, [esp + 0x8c]
push ecx
lea eax, [esp + 0x1b0]
fst qword [esp + 0x34]
fcos
push edx
push eax
mov dword [esp + 0x8c], ebp
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0x3ff00000
mov dword [esp + 0xa0], 0
mov dword [esp + 0xa4], 0
mov dword [esp + 0xa8], 0
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb8], 0
mov dword [esp + 0xbc], 0x3ff00000
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 0
mov dword [esp + 0xcc], 0
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xdc], 0x3ff00000
mov dword [esp + 0x150], 0
mov dword [esp + 0x154], 0
mov dword [esp + 0x168], 0
mov dword [esp + 0x16c], 0
mov dword [esp + 0x170], 0
mov dword [esp + 0x174], 0
mov dword [esp + 0x178], 0
mov dword [esp + 0x17c], 0
mov dword [esp + 0x180], 0
mov dword [esp + 0x184], 0x3ff00000
fld qword [esp + 0x3c]
fsin
fld st(1)
fstp qword [esp + 0x140]
fld st(0)
fchs
fstp qword [esp + 0x148]
fstp qword [esp + 0x158]
fstp qword [esp + 0x160]
call fcn.004b1720
mov ecx, 0x12
mov esi, eax
lea edi, [esp + 0x1b8]
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x12
lea esi, [esp + 0x1b8]
add ebp, 0x14
lea edi, [esp + 0x98]
mov dword [esp + 0x20], ebp
lea edx, [esp + 0x128]
fild dword [esp + 0x20]
rep movsd dword es:[edi], dword [esi]
fst qword [esp + 0x84]
fstp qword [esp + 0x128]
mov ecx, dword [esp + 0x64]
lea eax, [esp + 0x98]
add ecx, 0x14
push edx
mov dword [esp + 0x24], ecx
lea ecx, [esp + 0x70]
fild dword [esp + 0x24]
push eax
push ecx
mov dword [esp + 0x144], 0
mov dword [esp + 0x148], 0
fst qword [esp + 0x48]
fstp qword [esp + 0x13c]
call fcn.004b1670
fild dword [ebx + 0x1a0d8]
mov ecx, 6
mov esi, eax
lea edi, [esp + 0x78]
add esp, 0x18
rep movsd dword es:[edi], dword [esi]
fld qword [esp + 0x60]
fdiv st(1)
lea edx, [esp + 0x18]
lea ebp, [ebx + 0x2bde8]
lea eax, [esp + 0x40]
push edx
push eax
mov ecx, ebp
fstp qword [esp + 0x48]
fld qword [esp + 0x70]
fdiv st(1)
fstp qword [esp + 0x50]
fld qword [esp + 0x78]
fdiv st(1)
fstp qword [esp + 0x58]
fstp st(0)
call fcn.004b1440
test eax, eax
je 0x4aedf8
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x14], ecx
neg eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xdc], edx
lea ecx, [esp + 0xd4]
mov dword [esp + 0xe0], eax
lea edx, [esp + 0x8c]
push ecx
lea eax, [esp + 0x198]
push edx
push eax
mov dword [esp + 0xe0], 0
mov dword [esp + 0xe4], 0
mov dword [esp + 0xf0], 0
mov dword [esp + 0xf4], 0
call fcn.004b1670
fild dword [ebx + 0x1a0d8]
mov ecx, 6
mov esi, eax
lea edi, [esp + 0x6c]
add esp, 0xc
rep movsd dword es:[edi], dword [esi]
fld qword [esp + 0x60]
fdiv st(1)
lea ecx, [esp + 0x18]
lea edx, [esp + 0x40]
push ecx
push edx
mov ecx, ebp
fstp qword [esp + 0x48]
fld qword [esp + 0x70]
fdiv st(1)
fstp qword [esp + 0x50]
fld qword [esp + 0x78]
fdiv st(1)
fstp qword [esp + 0x58]
fstp st(0)
call fcn.004b1440
test eax, eax
je 0x4aedf8
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0xec], ecx
neg eax
mov dword [esp + 0x24], eax
lea eax, [esp + 0xec]
mov dword [esp + 0xf0], edx
lea ecx, [esp + 0x8c]
push eax
lea edx, [esp + 0x198]
push ecx
push edx
mov dword [esp + 0x100], 0
mov dword [esp + 0x104], 0
mov dword [esp + 0x108], 0
mov dword [esp + 0x10c], 0
call fcn.004b1670
fild dword [ebx + 0x1a0d8]
mov ecx, 6
mov esi, eax
lea edi, [esp + 0x6c]
add esp, 0xc
rep movsd dword es:[edi], dword [esi]
fld qword [esp + 0x60]
fdiv st(1)
lea eax, [esp + 0x18]
lea ecx, [esp + 0x40]
push eax
push ecx
mov ecx, ebp
fstp qword [esp + 0x48]
fld qword [esp + 0x70]
fdiv st(1)
fstp qword [esp + 0x50]
fld qword [esp + 0x78]
fdiv st(1)
fstp qword [esp + 0x58]
fstp st(0)
call fcn.004b1440
test eax, eax
je 0x4aedf8
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
neg edi
cmp ecx, edx
mov dword [esp + 0x28], edi
mov eax, ecx
jl 0x4aea21
mov eax, edx
mov esi, dword [esp + 0x20]
cmp esi, eax
jge 0x4aea2d
mov eax, esi
jmp 0x4aea35
cmp ecx, edx
mov eax, ecx
jl 0x4aea35
mov eax, edx
test eax, eax
jle 0x4aea43
mov dword [esp + 0x10], 0
jmp 0x4aea61
cmp ecx, edx
mov eax, ecx
jl 0x4aea4b
mov eax, edx
cmp esi, eax
jge 0x4aea55
mov dword [esp + 0x10], esi
jmp 0x4aea61
cmp ecx, edx
mov dword [esp + 0x10], ecx
jl 0x4aea61
mov dword [esp + 0x10], edx
mov esi, dword [esp + 0x2c]
cmp esi, edi
mov eax, esi
jl 0x4aea6d
mov eax, edi
mov ebp, dword [esp + 0x24]
cmp ebp, eax
jge 0x4aea79
mov eax, ebp
jmp 0x4aea81
cmp esi, edi
mov eax, esi
jl 0x4aea81
mov eax, edi
test eax, eax
jle 0x4aea89
xor edi, edi
jmp 0x4aea9f
cmp esi, edi
mov eax, esi
jl 0x4aea91
mov eax, edi
cmp ebp, eax
jge 0x4aea99
mov edi, ebp
jmp 0x4aea9f
cmp esi, edi
jge 0x4aea9f
mov edi, esi
cmp ecx, edx
mov eax, ecx
jg 0x4aeaa7
mov eax, edx
mov ebp, dword [esp + 0x20]
cmp ebp, eax
jle 0x4aeab3
mov eax, ebp
jmp 0x4aeabb
cmp ecx, edx
mov eax, ecx
jg 0x4aeabb
mov eax, edx
test eax, eax
jge 0x4aeac3
xor ecx, ecx
jmp 0x4aead9
cmp ecx, edx
mov eax, ecx
jg 0x4aeacb
mov eax, edx
cmp ebp, eax
jle 0x4aead3
mov ecx, ebp
jmp 0x4aead9
cmp ecx, edx
jg 0x4aead9
mov ecx, edx
mov edx, dword [esp + 0x28]
mov eax, esi
cmp esi, edx
jg 0x4aeae5
mov eax, edx
mov ebp, dword [esp + 0x24]
cmp ebp, eax
jle 0x4aeaf1
mov eax, ebp
jmp 0x4aeaf9
cmp esi, edx
mov eax, esi
jg 0x4aeaf9
mov eax, edx
test eax, eax
jge 0x4aeb01
xor ebp, ebp
jmp 0x4aeb15
cmp esi, edx
mov eax, esi
jg 0x4aeb09
mov eax, edx
cmp ebp, eax
jg 0x4aeb15
cmp esi, edx
mov ebp, esi
jg 0x4aeb15
mov ebp, edx
mov edx, dword [esp + 0x10]
sub ebp, edi
sub ecx, edx
push ebp
mov eax, ecx
push ecx
cdq
sub eax, edx
mov dword [esp + 0x2c], ecx
mov edi, eax
mov eax, ebp
cdq
sub eax, edx
mov edx, dword [esp + 0x44]
mov esi, eax
push edx
sar edi, 1
sar esi, 1
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], esi
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x3c]
push eax
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x20], eax
push ecx
push eax
call dword [sym.imp.GDI32.dll_SelectObject]
test ebp, ebp
mov dword [ebx + 0x19fb8], eax
mov dword [esp + 0x10], 0
jle 0x4aece7
mov dword [esp + 0x38], esi
mov eax, dword [esp + 0x24]
xor ebp, ebp
test eax, eax
jle 0x4aecc3
fild dword [esp + 0x38]
fstp qword [esp + 0x84]
mov edi, dword [esp + 0x2c]
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x88]
mov edx, ebp
sub edx, edi
mov dword [esp + 0x10c], eax
mov dword [esp + 0x78], edx
lea edx, [esp + 0x104]
fild dword [esp + 0x78]
mov dword [esp + 0x110], ecx
lea eax, [esp + 0x8c]
push edx
lea ecx, [esp + 0x198]
fstp qword [esp + 0x108]
push eax
push ecx
mov dword [esp + 0x120], 0
mov dword [esp + 0x124], 0
call fcn.004b1670
fild dword [ebx + 0x1a0d8]
mov ecx, 6
mov esi, eax
lea edi, [esp + 0x6c]
add esp, 0xc
rep movsd dword es:[edi], dword [esi]
fld qword [esp + 0x60]
fdiv st(1)
lea edx, [esp + 0x18]
lea eax, [esp + 0x40]
push edx
push eax
lea ecx, [ebx + 0x2bde8]
fstp qword [esp + 0x48]
fld qword [esp + 0x70]
fdiv st(1)
fstp qword [esp + 0x50]
fld qword [esp + 0x78]
fdiv st(1)
fstp qword [esp + 0x58]
fstp st(0)
call fcn.004b1440
test eax, eax
je 0x4aedf8
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0x18]
mov eax, esi
cdq
sub eax, edx
mov ecx, eax
sar ecx, 1
add ecx, edi
mov edi, dword [esp + 0x58]
mov eax, edi
cdq
sub eax, edx
mov edx, dword [esp + 0x1c]
sar eax, 1
sub eax, edx
test ecx, ecx
jl 0x4aec9d
cmp ecx, esi
jge 0x4aec9d
test eax, eax
jl 0x4aec9d
cmp eax, edi
jge 0x4aec9d
push eax
push ecx
mov ecx, dword [esp + 0x64]
push ecx
call dword [sym.imp.GDI32.dll_GetPixel]
jmp 0x4aeca4
mov eax, dword [esp + 0x204]
mov edx, dword [esp + 0x10]
push eax
mov eax, dword [esp + 0x24]
push edx
push ebp
push eax
call dword [sym.imp.GDI32.dll_SetPixel]
mov eax, dword [esp + 0x24]
inc ebp
cmp ebp, eax
jl 0x4aeb9e
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x38]
mov ecx, dword [esp + 0x28]
inc eax
dec edx
cmp eax, ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x38], edx
jl 0x4aeb85
mov edi, dword [esp + 0x2c]
mov ebp, ecx
mov eax, dword [esp + 0x200]
fild dword [ebx + 0x1a0e0]
lea ecx, [eax + eax*2]
lea edx, [eax + eax*2 + 0x21cf]
lea eax, [esp + 0x18]
fld qword [ebx + ecx*8 + 0x10e68]
lea ecx, [ebx + ecx*8]
push eax
fdiv st(1)
fstp qword [esp + 0x44]
fld qword [ecx + 0x10e70]
fdiv st(1)
lea ecx, [esp + 0x44]
push ecx
lea ecx, [ebx + 0x2bde8]
fstp qword [esp + 0x50]
fld qword [ebx + edx*8]
fdiv st(1)
fstp qword [esp + 0x58]
fstp st(0)
call fcn.004b1440
test eax, eax
je 0x4aedf8
mov esi, dword [ebx + 0x1a11c]
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x1c]
sub esi, edi
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x208]
add esi, edi
mov edi, dword [ebx + 0x1a120]
sub edi, edx
mov edx, dword [esp + 0x20c]
sub edi, ecx
mov ecx, dword [esp + 0x1f8]
push edx
push eax
push edi
push esi
push ecx
mov ecx, ebx
call fcn.004aee10
mov edx, dword [esp + 0x204]
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
push edx
mov edx, dword [esp + 0x1fc]
push ebp
push eax
push 0
push 0
push ecx
push ebp
push eax
push edi
push esi
push edx
mov ecx, ebx
call fcn.004af2f0
mov eax, dword [ebx + 0x19fb8]
mov edi, dword [esp + 0x20]
mov ebp, dword [sym.imp.GDI32.dll_SelectObject]
push eax
push edi
call ebp
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.GDI32.dll_DeleteObject]
mov edx, dword [ebx + 0x19fb4]
mov esi, dword [esp + 0x5c]
push edx
push esi
call ebp
push esi
mov esi, dword [sym.imp.GDI32.dll_DeleteDC]
call esi
push edi
call esi
mov eax, dword [esp + 0x3c]
mov ecx, dword [ebx + 0x19da0]
push eax
push ecx
call dword [sym.imp.USER32.dll_ReleaseDC]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x1e4
ret 0x18