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

Disassembly:
push 0xffffffffffffffff
push 0x440b68
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x68
mov al, byte [esp + 0x84]
push ebx
push ebp
mov ebp, dword [sym.imp.USER32.dll_CopyRect]
mov dword [esp + 0xc], ecx
push esi
mov cl, byte [esp + 0x8c]
push edi
test al, al
mov dword [esp + 0x18], 0xffffffff
mov byte [esp + 0x13], 0
je 0x412bf3
test cl, cl
je 0x412bfb
mov eax, dword [esp + 0x8c]
lea ecx, [esp + 0x38]
push eax
push ecx
call ebp
mov esi, dword [esp + 0x88]
test esi, esi
jne 0x41296f
xor edi, edi
jmp 0x412972
mov edi, dword [esi + 4]
mov ebx, dword [sym.imp.USER32.dll_GetSysColor]
push 0x15
call ebx
push eax
push edi
lea ecx, [esp + 0x60]
call fcn.0040f5a0
test esi, esi
mov dword [esp + 0x80], 0
jne 0x41299a
xor edi, edi
jmp 0x41299d
mov edi, dword [esi + 4]
push 0
push 0x14
push 0xf
call ebx
push eax
call fcn.0040f220
add esp, 0xc
lea ecx, [esp + 0x48]
push eax
push edi
call fcn.0040f6d0
mov eax, dword [esp + 0x40]
mov ebp, dword [esp + 0x44]
mov ecx, dword [esp + 0x38]
mov edi, dword [esp + 0x3c]
sub eax, 4
push ebp
mov dword [0x457468], ecx
mov dword [0x45746c], edi
mov dword [0x457470], eax
mov dword [0x457474], ebp
mov edx, dword [esi + 4]
push eax
push edi
push ecx
push edx
mov byte [esp + 0x94], 1
mov dword [esp + 0x54], eax
mov byte [esp + 0x27], 1
call dword [sym.imp.GDI32.dll_Rectangle]
mov eax, dword [esp + 0x40]
push 0xf
mov dword [esp + 0x3c], eax
add eax, 4
mov dword [esp + 0x44], eax
call ebx
push eax
lea eax, [esp + 0x3c]
push eax
mov ecx, esi
call fcn.00437f8f
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x98], 0
mov dword [esp + 0x1c], 2
mov esi, dword [esp + 0x1c]
xor edx, edx
test esi, esi
setle dl
dec edx
mov edi, eax
and edx, esi
mov esi, dword [esp + 0x98]
mov ebp, edx
xor edx, edx
test esi, esi
setle dl
inc edx
sub edi, edx
mov dword [esp + 0x20], edx
sub edi, ecx
sub edi, esi
cmp ebp, edi
jge 0x412b8e
test ebp, ebp
jne 0x412a78
xor eax, eax
jmp 0x412aa4
cmp ebp, 1
jne 0x412a8e
mov edx, dword [esp + 0x98]
xor eax, eax
cmp edx, 2
setge al
jmp 0x412aa4
cmp ebp, 2
jne 0x412a9d
mov eax, dword [esp + 0x1c]
test eax, eax
mov eax, ebp
jle 0x412aa4
mov eax, dword [esp + 0x98]
mov ebx, dword [esp + 0x98]
lea eax, [eax + eax*4]
mov esi, 0x5d
lea ecx, [ecx + ebp + 4]
sub esi, eax
mov eax, dword [esp + 0x40]
push ecx
mov ecx, dword [esp + 0x8c]
sub eax, ebx
mov edx, dword [ecx + 4]
dec eax
push eax
push edx
call dword [sym.imp.GDI32.dll_GetPixel]
mov ecx, eax
mov eax, 0x51eb851f
mov edx, ecx
xor ebx, ebx
shr edx, 0x10
and edx, 0xff
imul edx, esi
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x51eb851f
mov bh, dl
xor edx, edx
mov dl, ch
and ecx, 0xff
and edx, 0xff
imul ecx, esi
imul edx, esi
mov edi, edx
mov esi, ecx
imul edi
mov edi, edx
sar edi, 5
mov eax, edi
mov edx, edi
shr eax, 0x1f
add edx, eax
mov eax, 0x51eb851f
mov bl, dl
imul esi
sar edx, 5
mov eax, edx
mov esi, dword [esp + 0x98]
shr eax, 0x1f
add edx, eax
mov eax, dword [esp + 0x40]
shl ebx, 8
and edx, 0xff
sub eax, esi
or ebx, edx
mov edx, dword [esp + 0x3c]
mov ecx, ebx
dec eax
lea edx, [edx + ebp + 4]
push ecx
push edx
push eax
mov eax, dword [esp + 0x94]
mov ecx, dword [eax + 4]
push ecx
call dword [sym.imp.GDI32.dll_SetPixel]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x20]
mov edx, eax
inc ebp
sub edx, ecx
mov ecx, dword [esp + 0x3c]
sub edx, ecx
sub edx, esi
cmp ebp, edx
jl 0x412a70
mov ebx, dword [esp + 0x98]
mov edx, dword [esp + 0x1c]
inc ebx
dec edx
cmp edx, 0xfffffffe
mov dword [esp + 0x98], ebx
mov dword [esp + 0x1c], edx
jg 0x412a3d
lea ecx, [esp + 0x48]
mov byte [esp + 0x80], 0
call fcn.0040f760
lea ecx, [esp + 0x58]
mov dword [esp + 0x80], 0xffffffff
call fcn.0040f620
mov ebp, dword [sym.imp.USER32.dll_CopyRect]
mov esi, dword [esp + 0x88]
mov edi, dword [esp + 0x8c]
mov ebx, dword [sym.imp.USER32.dll_GetSysColor]
jmp 0x412dcd
test cl, cl
jne 0x412cb3
mov cl, byte [esp + 0x98]
test cl, cl
je 0x412c15
mov cl, byte [esp + 0x9c]
test cl, cl
je 0x412cb3
test al, al
jne 0x412c8d
mov edi, dword [esp + 0x8c]
lea eax, [esp + 0x38]
push edi
push eax
call ebp
mov ebx, dword [sym.imp.USER32.dll_GetSysColor]
push 0
push 0x14
push 0xf
mov dword [esp + 0x4c], 0x16
call ebx
push eax
call fcn.0040f220
mov esi, dword [esp + 0x94]
add esp, 0xc
lea ecx, [esp + 0x38]
push eax
push ecx
mov ecx, esi
call fcn.00437f8f
mov edx, dword [esp + 0x40]
mov eax, dword [edi + 8]
push 0
push 0x4b
push 0xf
mov dword [esp + 0x44], edx
mov dword [esp + 0x4c], eax
call ebx
push eax
call fcn.0040f220
add esp, 0xc
lea ecx, [esp + 0x38]
push eax
push ecx
mov ecx, esi
call fcn.00437f8f
jmp 0x412dcd
mov ebx, dword [sym.imp.USER32.dll_GetSysColor]
push 0xf
call ebx
mov edi, dword [esp + 0x8c]
mov esi, dword [esp + 0x88]
push eax
push edi
mov ecx, esi
call fcn.00437f8f
jmp 0x412dcd
mov ebx, dword [sym.imp.USER32.dll_GetSysColor]
push 0xd
call ebx
mov esi, dword [esp + 0x88]
mov edi, eax
test esi, esi
jne 0x412cce
xor eax, eax
jmp 0x412cd1
mov eax, dword [esi + 4]
push edi
push eax
lea ecx, [esp + 0x50]
call fcn.0040f5a0
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x80], 2
call fcn.004126a0
test al, al
je 0x412cff
push 0
push 0x49
push 0xf
call ebx
push eax
jmp 0x412d04
push 0xffffffffffffffc7
push 0x46
push edi
call fcn.0040f220
add esp, 0xc
mov dword [esp + 0x18], eax
test esi, esi
jne 0x412d18
xor ecx, ecx
jmp 0x412d1b
mov ecx, dword [esi + 4]
push eax
push ecx
lea ecx, [esp + 0x60]
call fcn.0040f6d0
mov al, byte [esp + 0x94]
mov edi, dword [esp + 0x8c]
test al, al
mov byte [esp + 0x80], 3
je 0x412d8f
lea edx, [esp + 0x38]
push edi
push edx
call ebp
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x3c]
sub eax, 4
push ecx
mov ecx, dword [esi + 4]
mov dword [esp + 0x44], eax
push eax
mov eax, dword [esp + 0x40]
push edx
push eax
push ecx
call dword [sym.imp.GDI32.dll_Rectangle]
mov eax, dword [esp + 0x40]
push 0xf
mov dword [esp + 0x3c], eax
add eax, 4
mov dword [esp + 0x44], eax
call ebx
lea edx, [esp + 0x38]
push eax
push edx
mov ecx, esi
call fcn.00437f8f
jmp 0x412da8
mov eax, dword [edi + 0xc]
mov ecx, dword [edi + 8]
mov edx, dword [edi + 4]
push eax
mov eax, dword [edi]
push ecx
mov ecx, dword [esi + 4]
push edx
push eax
push ecx
call dword [sym.imp.GDI32.dll_Rectangle]
lea ecx, [esp + 0x58]
mov byte [esp + 0x80], 2
call fcn.0040f760
lea ecx, [esp + 0x48]
mov dword [esp + 0x80], 0xffffffff
call fcn.0040f620
mov ecx, dword [esp + 0x14]
call fcn.00412650
test al, al
je 0x412e63
test esi, esi
jne 0x412de6
xor ebp, ebp
jmp 0x412de9
mov ebp, dword [esi + 4]
push 0
push 0xffffffffffffffee
push 0xf
call ebx
push eax
call fcn.0040f220
add esp, 0xc
lea ecx, [esp + 0x58]
push eax
push ebp
call fcn.0040f5a0
mov eax, dword [edi + 4]
mov ebp, dword [edi + 0xc]
add eax, ebp
mov ecx, esi
cdq
sub eax, edx
mov edx, dword [edi]
sar eax, 1
push eax
add edx, 0x1e
lea eax, [esp + 0x24]
push edx
push eax
mov dword [esp + 0x8c], 4
call fcn.004368ed
mov eax, dword [edi + 4]
mov edx, dword [edi + 0xc]
mov ecx, dword [edi + 8]
add eax, edx
cdq
sub eax, edx
sar eax, 1
dec ecx
push eax
push ecx
mov ecx, esi
call fcn.00436939
lea ecx, [esp + 0x58]
mov dword [esp + 0x80], 0xffffffff
call fcn.0040f620
jmp 0x4133bf
lea edx, [esp + 0x28]
push edi
push edx
call ebp
mov eax, dword [0x453330]
mov dword [esp + 0x98], eax
lea ecx, [esp + 0x98]
mov dword [esp + 0x80], 5
push ecx
mov ecx, dword [esp + 0x18]
call fcn.004124e0
test eax, eax
jle 0x4133a8
mov al, byte [esp + 0x9c]
test al, al
je 0x412eaa
push 0x10
jmp 0x412ecc
mov ecx, dword [esp + 0x14]
call fcn.004126a0
test al, al
je 0x412eca
push 0
push 0xffffffffffffffee
push 0xf
call ebx
push eax
call fcn.0040f220
add esp, 0xc
jmp 0x412ece
push 7
call ebx
mov edx, dword [esi]
push eax
mov ecx, esi
call dword [edx + 0x30]
push 1
mov ecx, esi
call fcn.00436630
lea eax, [esp + 0x88]
push 0
push eax
push 0
push 0x100a
mov dword [esp + 0x98], 1
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
mov al, byte [esp + 0xa0]
test al, al
je 0x412f1e
mov eax, dword [esp + 0x88]
test eax, eax
jne 0x412f1e
mov ebp, 0x100000
jmp 0x412f20
xor ebp, ebp
mov al, byte [esp + 0x94]
test al, al
je 0x412f57
mov eax, dword [esp + 0x30]
mov edx, dword [esi]
sub eax, 4
or ebp, 0x25
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x98]
lea edi, [esp + 0x28]
push ebp
mov ecx, dword [eax - 8]
push edi
push ecx
push eax
mov ecx, esi
call dword [edx + 0x68]
jmp 0x4133a8
test esi, esi
jne 0x412f5f
xor ebx, ebx
jmp 0x412f62
mov ebx, dword [esi + 4]
mov ecx, dword [esp + 0x14]
call fcn.004126b0
push eax
push ebx
lea ecx, [esp + 0x70]
call fcn.0040f8c0
mov eax, dword [esp + 0x98]
mov edx, dword [esi]
or ebp, 0x24
mov dword [esp + 0x28], 0x1e
mov ecx, dword [eax - 8]
lea ebx, [esp + 0x28]
push ebp
push ebx
push ecx
push eax
mov ecx, esi
mov byte [esp + 0x90], 6
call dword [edx + 0x68]
mov eax, dword [0x453330]
mov dword [esp + 0x9c], eax
lea ecx, [esp + 0x9c]
mov byte [esp + 0x80], 7
push ecx
mov ecx, dword [esp + 0x18]
call fcn.00412580
test eax, eax
jle 0x412ff0
mov ebp, dword [esp + 0x30]
mov eax, dword [esp + 0x9c]
mov edx, dword [esi]
sub ebp, 0xc
mov dword [esp + 0x30], ebp
mov ecx, dword [eax - 8]
lea ebx, [esp + 0x28]
push 0x26
push ebx
push ecx
push eax
mov ecx, esi
call dword [edx + 0x68]
mov ebx, dword [esp + 0x14]
mov ecx, ebx
call fcn.00412670
test al, al
je 0x4130b7
push 0xd
call dword [sym.imp.USER32.dll_GetSysColor]
test esi, esi
mov ebp, eax
jne 0x413015
xor eax, eax
jmp 0x413018
mov eax, dword [esi + 4]
push ebp
push eax
lea ecx, [esp + 0x50]
call fcn.0040f5a0
mov ecx, ebx
mov byte [esp + 0x80], 8
call fcn.004126a0
test al, al
je 0x413045
push 0
push 0x49
push 0xf
call dword [sym.imp.USER32.dll_GetSysColor]
push eax
jmp 0x41305b
mov al, byte [esp + 0x90]
test al, al
je 0x413056
push 0xffffffffffffffce
push 0x32
jmp 0x41305a
push 0xffffffffffffffc7
push 0x46
push ebp
call fcn.0040f220
add esp, 0xc
mov ebx, eax
test esi, esi
mov dword [esp + 0x18], ebx
jne 0x413071
xor eax, eax
jmp 0x413074
mov eax, dword [esi + 4]
push ebx
push eax
lea ecx, [esp + 0x60]
call fcn.0040f6d0
mov eax, dword [edi + 0xc]
mov edx, dword [edi]
mov ecx, dword [edi + 4]
dec eax
lea ebp, [edx + 0x14]
inc ecx
push eax
mov eax, dword [esi + 4]
inc edx
push ebp
push ecx
push edx
push eax
call dword [sym.imp.GDI32.dll_Rectangle]
lea ecx, [esp + 0x58]
call fcn.0040f760
lea ecx, [esp + 0x48]
mov byte [esp + 0x80], 7
call fcn.0040f620
jmp 0x4130bb
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x14]
mov eax, dword [ebp + 0x30]
test eax, eax
je 0x41323a
cmp dword [ebp + 0x34], 0xffffffff
je 0x41323a
mov ecx, ebp
call fcn.004126a0
test al, al
jne 0x4130ee
mov al, byte [esp + 0x90]
test al, al
je 0x4130ee
mov bl, 1
jmp 0x4130f0
xor bl, bl
mov ecx, ebp
mov byte [esp + 0x94], bl
call fcn.004126a0
test al, al
jne 0x413120
mov al, byte [esp + 0x90]
test al, al
je 0x4131c6
mov ecx, ebp
call fcn.00412670
test al, al
jne 0x4131c6
mov eax, dword [esp + 0x14]
push 0
mov ecx, dword [eax + 0x34]
mov edx, dword [eax + 0x30]
push ecx
push edx
call dword [sym.imp.COMCTL32.dll_ImageList_GetIcon]
test bl, bl
mov ebp, eax
je 0x413142
push 0xffffffffffffffbe
push 0x32
push 0xd
jmp 0x413148
push 0
push 0xffffffffffffffe5
push 0xf
call dword [sym.imp.USER32.dll_GetSysColor]
push eax
call fcn.0040f220
add esp, 0xc
lea ecx, [esp + 0x20]
push eax
call fcn.00436e1d
test eax, eax
jne 0x413169
xor ebx, ebx
jmp 0x41316c
mov ebx, dword [eax + 4]
mov dl, byte [esp + 0x94]
mov eax, dword [edi]
xor ecx, ecx
push 0x83
test dl, dl
mov edx, dword [esp + 0x30]
push 0x10
setne cl
add ecx, 3
push 0x10
add eax, ecx
add ecx, edx
mov edx, dword [esi + 4]
push ecx
push eax
push 0
push ebp
push 0
push ebx
push edx
call dword [sym.imp.USER32.dll_DrawStateA]
mov dword [esp + 0x20], vtable.CGdiObject.0
lea ecx, [esp + 0x20]
mov byte [esp + 0x80], 9
call fcn.00436db7
push ebp
call dword [sym.imp.USER32.dll_DestroyIcon]
mov ebp, dword [esp + 0x14]
mov ecx, ebp
call fcn.004126a0
test al, al
jne 0x413383
mov al, byte [esp + 0x90]
test al, al
je 0x4131f0
mov ecx, ebp
call fcn.00412670
test al, al
mov ebx, 2
je 0x4131f5
mov ebx, 3
mov al, byte [esp + 0x90]
test al, al
je 0x413210
mov ecx, ebp
call fcn.00412670
test al, al
mov eax, 2
je 0x413215
mov eax, 3
mov ecx, dword [esp + 0x2c]
mov edx, dword [edi]
add ebx, ecx
mov ecx, dword [ebp + 0x34]
push 1
add edx, eax
mov eax, dword [esi + 4]
push ebx
push edx
mov edx, dword [ebp + 0x30]
push eax
push ecx
push edx
call dword [sym.imp.COMCTL32.dll_ImageList_Draw]
jmp 0x413383
mov ecx, ebp
call fcn.00412670
test al, al
je 0x413383
mov edi, dword [edi]
mov ecx, ebp
add edi, 5
mov dword [esp + 0x28], edi
add edi, 0xf
mov dword [esp + 0x30], edi
call fcn.00412680
test al, al
je 0x413337
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
add eax, ecx
mov ecx, dword [esp + 0x14]
cdq
sub eax, edx
mov edx, dword [esp + 0x28]
mov edi, eax
mov eax, dword [esp + 0x30]
add eax, edx
cdq
sub eax, edx
mov ebp, eax
sar edi, 1
sar ebp, 1
call fcn.004126a0
test al, al
je 0x4132ae
push 0
push 0xffffffffffffffe5
push 0xf
call dword [sym.imp.USER32.dll_GetSysColor]
push eax
call fcn.0040f220
add esp, 0xc
jmp 0x4132b6
push 7
call dword [sym.imp.USER32.dll_GetSysColor]
test esi, esi
mov ebx, eax
jne 0x4132c0
xor eax, eax
jmp 0x4132c3
mov eax, dword [esi + 4]
push ebx
push eax
lea ecx, [esp + 0x50]
call fcn.0040f5a0
test esi, esi
mov byte [esp + 0x80], 0xa
jne 0x4132de
xor eax, eax
jmp 0x4132e1
mov eax, dword [esi + 4]
push ebx
push eax
lea ecx, [esp + 0x60]
call fcn.0040f6d0
lea ebx, [edi + 4]
lea edx, [ebp + 3]
lea ecx, [edi - 3]
push ebx
push edx
lea eax, [ebp - 4]
push ecx
mov ecx, dword [esi + 4]
push eax
push ecx
call dword [sym.imp.GDI32.dll_Ellipse]
mov edx, dword [esp + 0x18]
mov eax, dword [esi + 4]
add edi, 2
push edx
inc ebp
push edi
push ebp
push eax
call dword [sym.imp.GDI32.dll_SetPixel]
lea ecx, [esp + 0x58]
call fcn.0040f760
lea ecx, [esp + 0x48]
mov byte [esp + 0x80], 7
call fcn.0040f620
jmp 0x413383
mov edx, dword [esi]
push ebx
mov ecx, esi
call dword [edx + 0x2c]
push 0x7ff8
push 0
call dword [sym.imp.USER32.dll_LoadBitmapA]
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mov ebp, dword [esp + 0x28]
mov edi, eax
mov eax, dword [esp + 0x34]
mov esi, dword [esi + 4]
sub eax, edx
sub ecx, ebp
push 4
add edx, 3
push eax
push ecx
push edx
push ebp
push 0
push edi
push 0
push 0
push esi
call dword [sym.imp.USER32.dll_DrawStateA]
push edi
call dword [sym.imp.GDI32.dll_DeleteObject]
lea ecx, [esp + 0x9c]
mov byte [esp + 0x80], 6
call fcn.00433528
lea ecx, [esp + 0x68]
mov byte [esp + 0x80], 5
call fcn.0040f990
lea ecx, [esp + 0x98]
mov dword [esp + 0x80], 0xffffffff
call fcn.00433528
mov ecx, dword [esp + 0x78]
mov al, byte [esp + 0x13]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x74
ret 0x1c