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

Disassembly:
push 0xffffffffffffffff
push 0x6256b8
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x54
push ebx
push ebp
push esi
xor esi, esi
push edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x50], vtable.CArray_class_CRect__class_CRect_.0
mov dword [esp + 0x54], esi
mov dword [esp + 0x60], esi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x58], esi
mov edi, dword [esp + 0x78]
mov eax, dword [esp + 0x7c]
cmp edi, eax
mov dword [esp + 0x6c], esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x20], esi
jg 0x59ecc3
mov ecx, edi
lea eax, [ecx*8]
sub eax, ecx
shl eax, 3
mov dword [esp + 0x1c], eax
mov eax, ecx
shl eax, 4
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], eax
jmp 0x59eb9b
mov esi, dword [esp + 0x58]
mov eax, dword [esp + 0x74]
mov ebx, dword [esp + 0x1c]
mov eax, dword [eax + 4]
add eax, ebx
lea ecx, [eax + 0x18]
mov edx, ecx
mov eax, dword [edx]
mov dword [esp + 0x2c], eax
mov ebx, dword [edx + 4]
mov dword [esp + 0x30], ebx
mov ebp, dword [edx + 8]
mov dword [esp + 0x34], ebp
mov edx, dword [edx + 0xc]
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x78]
cmp edi, edx
mov dl, byte [esp + 0x84]
jne 0x59ebdf
test dl, dl
jne 0x59ec2f
mov eax, ebx
jmp 0x59ec2f
test dl, dl
mov edx, dword [esp + 0x14]
je 0x59ec06
mov ebx, dword [esp + 0x18]
sub edx, ebx
mov ebx, dword [esp + 0x54]
sub eax, dword [edx + ebx - 8]
mov edx, dword [esp + 0x7c]
cmp edi, edx
jne 0x59ec2f
mov edx, dword [esp + 0x80]
jmp 0x59ec2b
mov eax, dword [esp + 0x18]
sub edx, eax
mov eax, ebx
mov ebx, dword [esp + 0x54]
mov ebp, dword [edx + ebx - 4]
mov edx, dword [esp + 0x7c]
sub eax, ebp
cmp edi, edx
jne 0x59ec2f
mov edx, dword [esp + 0x80]
mov ebp, dword [esp + 0x38]
sub edx, ebp
add eax, edx
mov edx, dword [esp + 0x24]
mov ebp, dword [ecx]
mov ebx, dword [ecx + 4]
add edx, eax
mov eax, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
mov dword [esp + 0x24], edx
lea edx, [esi + 1]
mov dword [esp + 0x48], ecx
push 0xffffffffffffffff
push edx
lea ecx, [esp + 0x58]
mov dword [esp + 0x4c], eax
call fcn.005a1c40
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x44]
shl esi, 4
add esi, ecx
mov ecx, dword [esp + 0x48]
mov dword [esi], ebp
mov dword [esi + 4], ebx
mov dword [esi + 8], eax
mov al, byte [esp + 0x84]
test al, al
mov dword [esi + 0xc], ecx
je 0x59ec8c
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x2c]
jmp 0x59ec94
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
sub eax, ecx
mov ecx, dword [esp + 0x1c]
add ebx, eax
mov eax, dword [esp + 0x7c]
inc edi
add edx, 0x10
add ecx, 0x38
cmp edi, eax
mov dword [esp + 0x20], ebx
mov dword [esp + 0x14], edx
mov dword [esp + 0x1c], ecx
jle 0x59eb97
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x80]
sub eax, ecx
mov byte [esp + 0x12], 0
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
test eax, eax
jle 0x59ed66
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x7c]
sub esi, eax
mov eax, dword [esp + 0x78]
cmp ebx, eax
mov dword [esp + 0x14], esi
jl 0x59ed5d
mov edi, ebx
mov ebp, eax
sub ebx, eax
shl edi, 4
shl ebp, 4
inc ebx
mov edx, dword [esp + 0x54]
mov eax, edi
sub eax, ebp
lea esi, [eax + edx]
mov dl, byte [esp + 0x84]
test dl, dl
je 0x59ed23
mov eax, dword [esi + 8]
jmp 0x59ed26
mov eax, dword [esi + 0xc]
sub ecx, eax
mov eax, ecx
jns 0x59ed4c
mov cl, dl
neg cl
sbb ecx, ecx
not ecx
and ecx, eax
neg dl
sbb edx, edx
push ecx
and edx, eax
push edx
push esi
call dword [sym.imp.USER32.dll_OffsetRect]
mov dl, byte [esp + 0x84]
test dl, dl
je 0x59ed54
mov ecx, dword [esi]
jmp 0x59ed57
mov ecx, dword [esi + 4]
sub edi, 0x10
dec ebx
jne 0x59ed08
test ecx, ecx
jl 0x59ed66
mov byte [esp + 0x12], 1
mov al, byte [esp + 0x12]
mov byte [esp + 0x13], 0
test al, al
jne 0x59f158
mov eax, dword [esp + 0x14]
test eax, eax
jl 0x59f171
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x80]
cmp ecx, eax
jl 0x59ee98
mov eax, ecx
shl ecx, 4
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x78]
lea ebp, [eax*8]
mov esi, ecx
sub ebp, eax
sub eax, ecx
shl ebp, 3
shl esi, 4
inc eax
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x74]
mov ebx, dword [esp + 0x14]
sub eax, esi
mov esi, dword [esp + 0x54]
mov ecx, dword [ecx + 4]
lea edi, [eax + esi]
mov al, byte [esp + 0x84]
add ecx, ebp
test al, al
je 0x59edf8
mov esi, dword [edi + 8]
mov eax, dword [ecx + 0x10]
sub esi, eax
mov eax, dword [edi]
jmp 0x59ee03
mov esi, dword [edi + 0xc]
mov eax, dword [edi + 4]
sub esi, eax
mov eax, dword [ecx + 0x14]
sub esi, eax
test esi, esi
jge 0x59ee0b
xor esi, esi
cmp esi, ebx
jle 0x59ee11
mov esi, ebx
mov eax, dword [esp + 0x14]
xor bl, bl
test eax, eax
jle 0x59ee23
sub eax, esi
mov bl, 1
mov dword [esp + 0x14], eax
mov cl, byte [esp + 0x84]
test cl, cl
je 0x59ee33
mov eax, dword [edi + 8]
jmp 0x59ee36
mov eax, dword [edi + 0xc]
sub edx, eax
mov eax, edx
mov dl, cl
neg dl
sbb edx, edx
not edx
and edx, eax
neg cl
sbb ecx, ecx
push edx
and ecx, eax
push ecx
push edi
call dword [sym.imp.USER32.dll_OffsetRect]
test bl, bl
je 0x59ee69
mov al, byte [esp + 0x84]
test al, al
mov eax, edi
jne 0x59ee67
lea eax, [edi + 4]
add dword [eax], esi
mov al, byte [esp + 0x84]
test al, al
je 0x59ee78
mov edx, dword [edi]
jmp 0x59ee7b
mov edx, dword [edi + 4]
mov esi, dword [esp + 0x24]
mov eax, dword [esp + 0x20]
sub esi, 0x10
sub ebp, 0x38
dec eax
mov dword [esp + 0x24], esi
mov dword [esp + 0x20], eax
jne 0x59edc3
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x59f171
test edx, edx
jl 0x59f171
jne 0x59f158
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x78]
cmp ecx, eax
jge 0x59f158
xor esi, esi
mov byte [esp + 0x13], 1
mov dword [esp + 0x3c], vtable.CArray_int__int_.0
mov dword [esp + 0x40], esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x48], esi
mov dword [esp + 0x44], esi
mov edx, dword [esp + 0x78]
mov ecx, eax
mov eax, dword [esp + 0x74]
push ecx
push edx
mov edx, dword [esp + 0x8c]
push esi
lea ecx, [esp + 0x48]
push eax
push ecx
mov ecx, dword [esp + 0x3c]
push edx
mov byte [esp + 0x84], 1
call fcn.005a10d0
mov eax, dword [esp + 0x44]
mov byte [esp + 0x88], 0
dec eax
cmp eax, esi
mov dword [esp + 0x14], eax
jle 0x59f13a
mov ecx, dword [esp + 0x40]
mov edx, dword [esp + 0x14]
mov esi, dword [ecx + edx*4 - 4]
mov ecx, dword [esp + 0x74]
mov edx, dword [ecx + 4]
lea eax, [esi*8]
sub eax, esi
lea eax, [edx + eax*8]
mov eax, dword [eax]
push eax
push 0x656a40
call fcn.005dda86
add esp, 8
test eax, eax
je 0x59f0b5
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x120]
mov edi, eax
test edi, edi
je 0x59f0b5
mov ecx, edi
call fcn.00571390
test al, al
jne 0x59f0b5
mov ebx, dword [esp + 0x78]
mov ecx, dword [esp + 0x54]
mov al, byte [esp + 0x84]
sub esi, ebx
shl esi, 4
add esi, ecx
test al, al
mov dword [esp + 0x24], esi
je 0x59efaa
mov ecx, dword [esi + 8]
mov eax, dword [esi]
sub ecx, eax
mov eax, dword [edi + 0x14]
jmp 0x59efb5
mov ecx, dword [esi + 0xc]
mov eax, dword [esi + 4]
sub ecx, eax
mov eax, dword [edi + 0x18]
cmp eax, ecx
jl 0x59f0b5
sub eax, ecx
mov ecx, dword [esp + 0x14]
mov ebp, eax
mov eax, dword [esp + 0x44]
cmp eax, ecx
mov dword [esp + 0x28], ebp
mov ebx, eax
jle 0x59f0b5
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x74]
mov esi, dword [eax + ebx*4 - 4]
mov eax, dword [edx + 4]
lea ecx, [esi*8]
sub ecx, esi
lea edi, [eax + ecx*8]
mov ecx, dword [eax + ecx*8]
push ecx
push 0x656a40
call fcn.005dda86
add esp, 8
test eax, eax
je 0x59f07d
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x120]
test eax, eax
je 0x59f07d
mov ecx, eax
call fcn.00571390
test al, al
jne 0x59f07d
mov eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x54]
mov dl, byte [esp + 0x84]
sub esi, eax
shl esi, 4
add esi, ecx
test dl, dl
je 0x59f046
mov eax, dword [esi + 8]
mov ecx, dword [edi + 0x10]
sub eax, ecx
mov ecx, dword [esi]
jmp 0x59f051
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 4]
sub eax, ecx
mov ecx, dword [edi + 0x14]
sub eax, ecx
test eax, eax
jl 0x59f07d
cmp eax, ebp
jl 0x59f05d
mov eax, ebp
test eax, eax
je 0x59f07d
test dl, dl
lea ecx, [esi + 8]
jne 0x59f06b
lea ecx, [esi + 0xc]
mov esi, dword [ecx]
mov byte [esp + 0x88], 1
sub esi, eax
sub ebp, eax
mov dword [ecx], esi
je 0x59f091
mov eax, dword [esp + 0x14]
dec ebx
cmp ebx, eax
jg 0x59efd7
mov dl, byte [esp + 0x84]
mov ecx, dword [esp + 0x28]
cmp ebp, ecx
je 0x59f0b5
test dl, dl
je 0x59f0a6
mov eax, dword [esp + 0x24]
add eax, 8
jmp 0x59f0ad
mov edx, dword [esp + 0x24]
lea eax, [edx + 0xc]
mov edx, dword [eax]
sub ecx, ebp
add edx, ecx
mov dword [eax], edx
mov eax, dword [esp + 0x14]
dec eax
test eax, eax
mov dword [esp + 0x14], eax
jg 0x59ef26
mov al, byte [esp + 0x88]
test al, al
je 0x59f13a
mov eax, dword [esp + 0x78]
mov ebx, dword [esp + 0x7c]
mov edi, eax
sub ebx, eax
shl edi, 4
xor ecx, ecx
mov ebp, edi
inc ebx
mov edx, dword [esp + 0x54]
mov eax, ebp
sub eax, edi
lea esi, [eax + edx]
mov dl, byte [esp + 0x84]
test dl, dl
je 0x59f0ff
mov eax, dword [esi]
jmp 0x59f102
mov eax, dword [esi + 4]
sub ecx, eax
mov eax, ecx
je 0x59f128
mov cl, dl
neg cl
sbb ecx, ecx
not ecx
and ecx, eax
neg dl
sbb edx, edx
push ecx
and edx, eax
push edx
push esi
call dword [sym.imp.USER32.dll_OffsetRect]
mov dl, byte [esp + 0x84]
test dl, dl
je 0x59f131
mov ecx, dword [esi + 8]
jmp 0x59f134
mov ecx, dword [esi + 0xc]
add ebp, 0x10
dec ebx
jne 0x59f0e5
mov dword [esp + 0x3c], vtable.CArray_int__int_.0
mov eax, dword [esp + 0x40]
mov byte [esp + 0x6c], 2
test eax, eax
je 0x59f158
push eax
call fcn.005dd7a4
add esp, 4
mov ecx, dword [esp + 0x8c]
test ecx, ecx
setne bl
test bl, bl
je 0x59f1cc
cmp byte [ecx], 0
je 0x59f1a3
xor bl, bl
jmp 0x59f1cc
mov edx, dword [esp + 0x88]
mov dword [esp + 0x50], vtable.CArray_class_CRect__class_CRect_.0
mov byte [edx], 0
mov eax, dword [esp + 0x54]
mov dword [esp + 0x6c], 3
test eax, eax
je 0x59f19c
push eax
call fcn.005dd7a4
add esp, 4
xor al, al
jmp 0x59f2eb
mov eax, dword [esp + 0x78]
test eax, eax
jle 0x59f1bf
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x7c]
mov eax, dword [eax + 8]
dec eax
cmp edx, eax
jge 0x59f1bf
xor bl, bl
jmp 0x59f1cc
mov al, byte [esp + 0x13]
test al, al
je 0x59f1cc
xor bl, bl
mov byte [ecx], 1
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x7c]
cmp eax, edx
mov dword [esp + 0x88], 0
mov dword [esp + 0x24], eax
jg 0x59f2c1
lea esi, [eax*8]
mov edx, eax
sub esi, eax
shl esi, 3
shl edx, 4
mov ecx, edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], ecx
jmp 0x59f20c
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x74]
mov edi, dword [esp + 0x54]
sub ecx, edx
mov eax, dword [eax + 4]
add ecx, edi
add eax, esi
mov ebp, dword [ecx]
lea edx, [eax + 0x18]
mov edi, edx
test bl, bl
mov dword [edi], ebp
mov ebp, dword [ecx + 4]
mov dword [edi + 4], ebp
mov ebp, dword [ecx + 8]
mov dword [edi + 8], ebp
mov ecx, dword [ecx + 0xc]
mov dword [edi + 0xc], ecx
je 0x59f297
mov cl, byte [esp + 0x84]
test cl, cl
je 0x59f24b
mov edx, dword [edx]
jmp 0x59f24e
mov edx, dword [eax + 0x1c]
mov edi, dword [esp + 0x24]
mov ebp, dword [esp + 0x78]
cmp edi, ebp
jne 0x59f262
test edx, edx
jle 0x59f262
xor bl, bl
jmp 0x59f29b
cmp edx, dword [esp + 0x88]
jle 0x59f26f
xor bl, bl
jmp 0x59f29b
test cl, cl
je 0x59f278
mov eax, dword [eax + 0x20]
jmp 0x59f27b
mov eax, dword [eax + 0x24]
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x88], eax
cmp edi, ecx
jne 0x59f29b
cmp eax, dword [esp + 0x80]
jge 0x59f29b
xor bl, bl
jmp 0x59f29b
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x7c]
inc edi
add ecx, 0x10
add esi, 0x38
cmp edi, eax
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], ecx
jle 0x59f208
mov ecx, dword [esp + 0x8c]
test bl, bl
je 0x59f2c8
mov byte [ecx], 1
mov dword [esp + 0x50], vtable.CArray_class_CRect__class_CRect_.0
mov eax, dword [esp + 0x54]
mov dword [esp + 0x6c], 4
test eax, eax
je 0x59f2e9
push eax
call fcn.005dd7a4
add esp, 4
mov al, 1
mov ecx, dword [esp + 0x64]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x60
ret 0x1c