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

Disassembly:
push 0xffffffffffffffff
push 0x530806
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x574
mov eax, dword [0x590f68]
push ebx
push ebp
push esi
mov ebp, ecx
mov dword [esp + 0x57c], eax
push edi
mov dword [esp + 0x24], ebp
xor edi, edi
mov dword [esp + 0x58c], edi
call fcn.00416510
cmp dword [ebp + 0x10], edi
je 0x4168b6
lea ecx, [esp + 0x28]
mov dword [esp + 0x3c], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x18], edi
call fcn.0050af1a
mov eax, dword [esp + 0x594]
push edi
push edi
push eax
lea ecx, [esp + 0x34]
mov byte [esp + 0x598], 1
call fcn.0050b262
test eax, eax
je 0x4168a0
push 0x4e34
mov dword [esp + 0x18], edi
mov dword [esp + 0x24], edi
call fcn.005043e5
mov esi, eax
add esp, 4
mov dword [esp + 0x38], esi
mov ebx, 0x4e20
jmp 0x4166e6
mov esi, dword [esp + 0x38]
push ebx
push esi
lea ecx, [esp + 0x30]
call fcn.0050ac2d
test eax, eax
jbe 0x41672b
test ebx, ebx
jle 0x416733
lea esp, [esp]
mov ecx, dword [esp + 0x20]
mov al, byte [esi]
inc ecx
cmp al, 0x49
mov dword [esp + 0x20], ecx
jne 0x416723
push 0xa
push 0x550a84
push esi
call fcn.004eace0
add esp, 0xc
test eax, eax
je 0x41676f
inc esi
inc edi
cmp edi, ebx
jl 0x416700
jmp 0x416733
mov dword [esp + 0x14], 1
xor eax, eax
xor edi, edi
cmp eax, edi
mov eax, dword [esp + 0x14]
jne 0x416745
cmp eax, edi
je 0x4166e2
jmp 0x416749
cmp eax, edi
je 0x416774
cmp ebx, 0x4e20
jne 0x416774
push edi
push edi
push edi
lea ecx, [esp + 0x34]
mov ebx, 0x4e34
call fcn.0050acb8
mov dword [esp + 0x20], edi
mov dword [esp + 0x14], edi
jmp 0x4166e2
add dword [esp + 0x20], 9
mov ecx, dword [esp + 0x38]
push ecx
call fcn.005043ea
mov eax, dword [esp + 0x18]
mov edi, dword [sym.imp.kernel32.dll_GlobalAlloc]
add esp, 4
test eax, eax
jne 0x416826
mov eax, dword [esp + 0x20]
cdq
xor ebx, ebx
push ebx
push edx
push eax
lea ecx, [esp + 0x34]
call fcn.0050acb8
push 1
lea edx, [esp + 0x47]
push edx
lea ecx, [esp + 0x30]
call fcn.0050ac2d
push 1
lea eax, [esp + 0x23]
push eax
lea ecx, [esp + 0x30]
call fcn.0050ac2d
push 1
lea ecx, [esp + 0x17]
push ecx
lea ecx, [esp + 0x30]
call fcn.0050ac2d
push 1
lea edx, [esp + 0x22]
push edx
lea ecx, [esp + 0x30]
call fcn.0050ac2d
movzx ecx, byte [esp + 0x13]
movzx eax, byte [esp + 0x1f]
imul ecx, ecx, 0xff
add ecx, eax
movzx eax, byte [esp + 0x1e]
mov dword [esp + 0x18], eax
imul eax, ecx
lea esi, [eax + eax*2]
push esi
push ebx
mov dword [esp + 0x2c], ecx
call edi
cmp eax, ebx
mov dword [esp + 0x3c], eax
je 0x416828
mov ecx, eax
push esi
push ecx
lea ecx, [esp + 0x30]
call fcn.0050ac2d
jmp 0x416828
xor ebx, ebx
lea ecx, [esp + 0x28]
call fcn.0050aeb8
cmp dword [esp + 0x24], ebx
jle 0x4168a0
cmp dword [esp + 0x18], ebx
jle 0x4168a0
mov esi, dword [esp + 0x3c]
cmp esi, ebx
je 0x4168a0
push 0x28
push ebx
call edi
mov dword [ebp + 8], eax
mov dword [eax], 0x28
mov edx, dword [ebp + 8]
mov eax, dword [esp + 0x24]
mov dword [edx + 4], eax
mov ecx, dword [ebp + 8]
mov edx, dword [esp + 0x18]
mov dword [ecx + 8], edx
mov eax, dword [ebp + 8]
mov word [eax + 0xc], 1
mov ecx, dword [ebp + 8]
mov word [ecx + 0xe], 0x18
mov edx, dword [ebp + 8]
mov dword [edx + 0x10], ebx
mov eax, dword [ebp + 8]
mov dword [eax + 0x14], ebx
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x18], ebx
mov edx, dword [ebp + 8]
mov dword [edx + 0x1c], ebx
mov eax, dword [ebp + 8]
mov dword [eax + 0x20], ebx
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x24], ebx
mov dword [ebp + 4], esi
lea ecx, [esp + 0x28]
mov byte [esp + 0x58c], 0
call fcn.0050af59
jmp 0x416bb2
lea ecx, [esp + 0x70]
call dword [sym.imp.ltwvc13n.dll_public:_void___thiscall_LBitmapBase::constructor_void_]
push edi
push edi
push 1
push 0x606060
push edi
push edi
push 1
push 0x20
push 0xc0
push 0x180
lea ecx, [esp + 0x320]
mov byte [esp + 0x5b4], 2
call dword [sym.imp.ltwvc13n.dll_public:_void___thiscall_LBitmapBase::constructor_unsigned_int__unsigned_int__unsigned_int__unsigned_int__struct_tagRGBQUAD___unsigned_int__unsigned_long_int__unsigned_int__unsigned_char___unsigned_long_int_]
lea ecx, [esp + 0x28]
mov byte [esp + 0x58c], 3
call fcn.0050af1a
mov edx, dword [esp + 0x594]
push edi
push edi
push edx
lea ecx, [esp + 0x34]
mov byte [esp + 0x598], 4
call fcn.0050b262
test eax, eax
je 0x416b7c
mov eax, 0x30
push 0x4e34
mov dword [esp + 0x48], 0x28
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov word [esp + 0x54], 1
mov word [esp + 0x56], 0x20
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], edi
mov dword [esp + 0x60], edi
mov dword [esp + 0x64], edi
mov dword [esp + 0x68], edi
mov dword [esp + 0x6c], edi
mov dword [esp + 0x18], edi
xor ebp, ebp
call fcn.005043e5
mov esi, eax
add esp, 4
mov dword [esp + 0x18], esi
mov ebx, 0x4e20
jmp 0x416980
jmp 0x416986
mov esi, dword [esp + 0x18]
push ebx
push esi
lea ecx, [esp + 0x30]
call fcn.0050ac2d
test eax, eax
jbe 0x4169c3
test ebx, ebx
jle 0x4169cb
lea esp, [esp]
mov al, byte [esi]
inc ebp
cmp al, 0x49
jne 0x4169bb
push 0xb
push 0x550a78
push esi
call fcn.004eace0
add esp, 0xc
test eax, eax
je 0x416a02
inc esi
inc edi
cmp edi, ebx
jl 0x4169a0
jmp 0x4169cb
mov dword [esp + 0x14], 1
xor eax, eax
xor edi, edi
cmp eax, edi
mov eax, dword [esp + 0x14]
jne 0x4169dd
cmp eax, edi
je 0x416982
jmp 0x4169e1
cmp eax, edi
je 0x416a05
cmp ebx, 0x4e20
jne 0x416a05
push edi
push edi
push edi
lea ecx, [esp + 0x34]
mov ebx, 0x4e34
call fcn.0050acb8
xor ebp, ebp
mov dword [esp + 0x14], edi
jmp 0x416982
add ebp, 0xa
mov eax, dword [esp + 0x18]
push eax
call fcn.005043ea
mov eax, dword [esp + 0x18]
add esp, 4
test eax, eax
lea ecx, [esp + 0x28]
jne 0x416b77
mov eax, ebp
cdq
push 0
push edx
push eax
call fcn.0050acb8
push 1
lea ecx, [esp + 0x17]
push ecx
lea ecx, [esp + 0x30]
call fcn.0050ac2d
mov al, byte [esp + 0x13]
cmp al, 0x48
jbe 0x416a48
mov al, 0x48
xor ebp, ebp
xor esi, esi
test al, al
mov byte [esp + 0x13], al
mov dword [esp + 0x18], ebp
jbe 0x416b48
lea esp, [esp]
push 0x2400
push 0
call dword [sym.imp.kernel32.dll_GlobalAlloc]
mov edi, eax
test edi, edi
je 0x416aae
push edi
call dword [sym.imp.kernel32.dll_GlobalLock]
mov ebx, eax
push 0x2400
push ebx
lea ecx, [esp + 0x30]
call fcn.0050ac2d
push ebx
lea edx, [esp + 0x48]
push edx
lea ecx, [esp + 0x78]
call dword [sym.imp.ltwvc13n.dll_public_virtual:_int___thiscall_LBitmapBase::ConvertFromDIB_struct_tagBITMAPINFO___unsigned_char__]
lea ecx, [esp + 0x70]
call dword [sym.imp.ltwvc13n.dll_public_virtual:_int___thiscall_LBitmapBase::Flip_void_]
push edi
call dword [sym.imp.kernel32.dll_GlobalFree]
jmp 0x416aee
call fcn.004eacb2
cdq
mov ecx, 0xff
idiv ecx
xor ebx, ebx
mov bh, dl
call fcn.004eacb2
cdq
mov ecx, 0xff
idiv ecx
mov bl, dl
shl ebx, 8
call fcn.004eacb2
cdq
mov ecx, 0xff
idiv ecx
lea ecx, [esp + 0x70]
movzx edx, dl
or ebx, edx
push ebx
call dword [sym.imp.ltwvc13n.dll_public_virtual:_int___thiscall_LBitmapBase::Fill_unsigned_long_int_]
push 2
push 0x20
push 0x20
lea ecx, [esp + 0x7c]
call dword [sym.imp.ltwvc13n.dll_public_virtual:_int___thiscall_LBitmapBase::Size_int__int__unsigned_long_int_]
push 0x320
push 0
push 0
push ebp
push esi
push 0x20
push 0x20
lea eax, [esp + 0x8c]
push eax
lea ecx, [esp + 0x318]
call dword [sym.imp.ltwvc13n.dll_public_virtual:_int___thiscall_LBitmapBase::Combine_class_LBitmapBase___int__int__int__int__int__int__unsigned_long_int_]
add esi, 0x20
cmp esi, 0x180
jl 0x416b32
xor esi, esi
add ebp, 0x20
mov eax, dword [esp + 0x18]
movzx ecx, byte [esp + 0x13]
inc eax
cmp eax, ecx
mov dword [esp + 0x18], eax
jl 0x416a60
lea ecx, [esp + 0x28]
call fcn.0050aeb8
lea ecx, [esp + 0x2f8]
call dword [sym.imp.ltwvc13n.dll_public_virtual:_void____thiscall_LBitmapBase::ConvertToDIB_void_]
mov esi, dword [esp + 0x24]
push eax
mov dword [esi + 0xc], eax
call dword [sym.imp.kernel32.dll_GlobalLock]
mov dword [esi + 8], eax
add eax, 0x28
mov dword [esi + 4], eax
jmp 0x416b7c
call fcn.0050aeb8
lea ecx, [esp + 0x28]
mov byte [esp + 0x58c], 3
call fcn.0050af59
mov esi, dword [sym.imp.ltwvc13n.dll_public_virtual:_void___thiscall_LBitmapBase::destructor_void_]
lea ecx, [esp + 0x2f8]
mov byte [esp + 0x58c], 2
call esi
lea ecx, [esp + 0x70]
mov byte [esp + 0x58c], 0
call esi
mov eax, dword [esp + 0x594]
add eax, 0xfffffff0
mov dword [esp + 0x58c], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
pop edi
pop esi
pop ebp
pop ebx
jg 0x416be2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov ecx, dword [esp + 0x574]
mov dword fs:[0], ecx
mov ecx, dword [esp + 0x570]
mov eax, 1
call fcn.004e9911
add esp, 0x580
ret 4