Function at 0x423940
Capabilities:
Extract resource via kernel32 functions
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5597ba
mov eax, dword fs:[0]
push eax
sub esp, 0x98
mov eax, dword [0x5aeb30]
xor eax, esp
mov dword [esp + 0x90], eax
push ebx
push esi
push edi
mov eax, dword [0x5aeb30]
xor eax, esp
push eax
lea eax, [esp + 0xa8]
mov dword fs:[0], eax
mov esi, ecx
mov eax, dword [esi + 0x10c]
mov ecx, dword [esi + 0x100]
mov dword [esp + 0x38], esi
test eax, eax
je 0x423999
mov eax, dword [eax + 4]
push eax
mov eax, dword [ecx + 4]
push eax
call fcn.00441434
lea edi, [esi + 0x104]
mov ecx, edi
call fcn.004413fd
mov ebx, dword [0x5b6a8c]
call fcn.0044271b
mov dword [eax + 0xc], ebx
call fcn.0044271b
mov eax, dword [eax + 0xc]
push 0x47d
push eax
call dword [sym.imp.user32.dll_LoadBitmapW]
push eax
mov ecx, edi
call fcn.004413a3
mov eax, dword [esi + 0x100]
xor ebx, ebx
cmp edi, ebx
jne 0x4239ea
xor edi, edi
jmp 0x4239ed
mov edi, dword [edi + 4]
mov ecx, dword [eax + 4]
push edi
push ecx
call fcn.00441434
mov ecx, dword [esi + 0x100]
push 1
call fcn.004406e9
mov dword [esp + 0x40], 0xa
mov dword [esp + 0x44], 9
mov dword [esp + 0x48], 0x221
mov dword [esp + 0x4c], 0x2b0
call fcn.00437cf1
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x423a3e
push 0x80004005
call fcn.00404270
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x3c], eax
mov dword [esp + 0xb0], ebx
mov ecx, dword [esi + 0x100]
mov edx, dword [ecx]
mov edx, dword [edx + 0x28]
lea eax, [esi + 0x118]
push eax
call edx
mov eax, dword [esi + 0xb7c]
push 5
push eax
lea ecx, [esp + 0x34]
push ecx
lea ecx, [esi + 0xb80]
mov dword [esp + 0x20], ebx
call fcn.00444a08
mov byte [esp + 0xb0], 1
call fcn.00437cf1
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x423aa8
push 0x80004005
call fcn.00404270
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
mov byte [esp + 0xb0], 2
mov ecx, dword [esi + 0xb7c]
push 3
push ecx
lea edx, [esp + 0x30]
push edx
lea ecx, [esi + 0xb80]
call fcn.00444a08
mov byte [esp + 0xb0], 3
mov eax, dword [esi + 0xb7c]
push 4
push eax
lea ecx, [esp + 0x38]
push ecx
lea ecx, [esi + 0xb80]
call fcn.00444a08
mov byte [esp + 0xb0], 4
cmp word [esi + 0x170], 0
je 0x423f77
mov dword [esp + 0x10], esi
jmp 0x423b20
mov edi, dword [esp + 0x10]
cmp byte [edi + 0x172], 0
je 0x423b8f
mov edx, 0x4c
cmp dx, word [edi + 0x170]
jne 0x423b44
lea eax, [esi + 0x14c]
push eax
jmp 0x423b4b
lea ecx, [esi + 0x154]
push ecx
mov ecx, dword [esi + 0x100]
call fcn.00441490
mov edx, dword [edi + 0x16c]
mov ecx, dword [edi + 0x168]
mov eax, dword [esi + 0x100]
push edx
mov edx, dword [edi + 0x164]
push ecx
mov ecx, dword [edi + 0x160]
push edx
mov edx, dword [eax + 4]
push ecx
push edx
call dword [sym.imp.gdi32.dll_Rectangle]
cmp byte [edi + 0x172], 0
jne 0x423da2
mov ecx, dword [esi + 0x100]
mov eax, dword [ecx]
mov edx, dword [eax + 0x30]
xor ebx, ebx
push ebx
call edx
mov ax, word [edi + 0x170]
mov word [esp + 0x34], ax
xor ecx, ecx
lea eax, [esp + 0x34]
mov word [esp + 0x36], cx
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x423bc0
sub eax, edx
sar eax, 1
push eax
lea edx, [esp + 0x38]
push edx
lea ecx, [esp + 0x28]
call fcn.004042c0
mov edi, dword [esp + 0x20]
mov ecx, str._
mov eax, edi
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x423c16
cmp dx, bx
je 0x423c12
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x423c16
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x423bf0
xor eax, eax
jmp 0x423c1b
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
sete al
test al, al
je 0x423c8e
push 0x588838
lea ecx, [esp + 0x1c]
call fcn.00404400
mov byte [esp + 0xb0], 5
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x10]
mov edx, dword [eax - 0xc]
mov ecx, dword [esi + 0x100]
mov ebx, dword [ecx]
push 0x25
add edi, 0x160
push edi
push edx
push eax
mov eax, dword [ebx + 0x68]
call eax
mov byte [esp + 0xb0], 4
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423d8d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x423d8d
mov ecx, 0x58883c
mov eax, edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x423cbb
cmp dx, bx
je 0x423cb7
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x423cbb
add eax, 4
add ecx, 4
cmp dx, bx
jne 0x423c95
xor eax, eax
jmp 0x423cc0
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
sete al
test al, al
je 0x423d6e
mov eax, dword [esi + 0xd0]
lea edi, [esi + 0xcc]
cmp eax, ebx
je 0x423d03
or ecx, 0xffffffff
push eax
mov dword [edi + 4], ebx
mov dword [edi + 8], ebx
mov dword [edi + 0xc], ebx
mov dword [edi + 0x10], ebx
mov dword [edi + 0x18], ebx
mov dword [edi + 0x14], ebx
mov dword [edi + 0x20], ecx
mov dword [edi + 0x24], ecx
mov word [edi + 0x1c], bx
call dword [sym.imp.gdi32.dll_DeleteObject]
mov eax, dword [0x5b6a8c]
push 0x588b50
push 0x49c
push eax
mov ebx, eax
call dword [sym.imp.kernel32.dll_FindResourceW]
test eax, eax
je 0x423d2a
push edi
mov ecx, ebx
call fcn.00406940
add esp, 4
call fcn.004069d0
mov esi, dword [esi + 0x100]
test esi, esi
jne 0x423d3d
xor eax, eax
jmp 0x423d40
mov eax, dword [esi + 4]
mov esi, dword [edi + 0xc]
mov edx, dword [esp + 0x10]
mov ecx, dword [edx + 0x164]
mov ebx, dword [edi + 0x10]
mov edx, dword [edx + 0x160]
push esi
push ebx
push esi
add ecx, 3
add edx, 0x1e
push ecx
push edx
mov esi, edi
call fcn.004121e0
mov esi, dword [esp + 0x38]
jmp 0x423d8d
mov edx, dword [esp + 0x10]
mov ecx, dword [esi + 0x100]
mov eax, dword [edi - 0xc]
mov ebx, dword [ecx]
push 0x25
add edx, 0x160
push edx
mov edx, dword [ebx + 0x68]
push eax
push edi
call edx
mov edi, dword [esp + 0x10]
cmp byte [edi + 0x172], 0
mov ebx, dword [esp + 0x14]
je 0x423f59
mov eax, dword [esp + 0x2c]
mov ecx, 0x58b588
jmp 0x423db0
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x423dd6
test dx, dx
je 0x423dd2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x423dd6
add eax, 4
add ecx, 4
test dx, dx
jne 0x423db0
xor eax, eax
jmp 0x423ddb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x423eb2
test ebx, ebx
js 0x423fb8
mov eax, dword [esp + 0x30]
cmp ebx, dword [eax - 0xc]
jg 0x423fb8
mov ecx, dword [esp + 0x28]
movzx eax, word [eax + ebx*2]
cmp ebx, dword [ecx - 0xc]
jg 0x423fb8
movzx ecx, word [ecx + ebx*2]
cmp ax, cx
mov ecx, dword [esi + 0x100]
mov eax, dword [ecx]
mov edx, dword [eax + 0x30]
je 0x423e29
push 0xff
jmp 0x423e2e
push 0xff0000
call edx
mov eax, dword [esp + 0x28]
cmp ebx, dword [eax - 0xc]
jg 0x423fb8
mov ax, word [eax + ebx*2]
mov word [esp + 0x24], ax
xor ecx, ecx
lea eax, [esp + 0x24]
mov word [esp + 0x26], cx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x423e54
sub eax, edx
sar eax, 1
push eax
lea edx, [esp + 0x28]
push edx
lea ecx, [esp + 0x28]
call fcn.004042c0
mov eax, dword [esp + 0x28]
cmp ebx, dword [eax - 0xc]
jg 0x423fb8
cmp word [eax + ebx*2], 0x4e
je 0x423f59
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
mov edx, dword [eax - 0xc]
mov ecx, dword [esi + 0x100]
mov ebx, dword [ecx]
push 0x25
add edi, 0x160
push edi
push edx
push eax
mov eax, dword [ebx + 0x68]
call eax
jmp 0x423f55
cmp byte [edi + 0x172], 0
je 0x423f59
mov ecx, dword [esi + 0x100]
mov edx, dword [ecx]
mov eax, dword [edx + 0x30]
push 0xff0000
call eax
test ebx, ebx
js 0x423fb8
mov eax, dword [esp + 0x30]
cmp ebx, dword [eax - 0xc]
jg 0x423fb8
mov cx, word [eax + ebx*2]
xor edx, edx
lea eax, [esp + 0x1c]
mov word [esp + 0x1e], dx
mov word [esp + 0x1c], cx
lea edx, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x423f00
sub eax, edx
sar eax, 1
push eax
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x28]
call fcn.004042c0
mov eax, dword [esp + 0x30]
cmp ebx, dword [eax - 0xc]
jg 0x423fb8
cmp word [eax + ebx*2], 0x4e
je 0x423f59
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
mov edx, dword [eax - 0xc]
mov ecx, dword [esi + 0x100]
mov ebx, dword [ecx]
push 0x25
add edi, 0x160
push edi
push edx
mov edx, dword [ebx + 0x68]
push eax
call edx
mov ebx, dword [esp + 0x14]
inc ebx
lea eax, [ebx + ebx*4]
cmp word [esi + eax*4 + 0x170], 0
lea eax, [esi + eax*4]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x10], eax
jne 0x423b20
lea ecx, [esi + 0x144]
push ecx
mov ecx, dword [esi + 0x100]
call fcn.00441490
mov eax, dword [esp + 0x2c]
mov ecx, 0x5888ac
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x423fc2
test dx, dx
je 0x423fb4
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x423fc2
add eax, 4
add ecx, 4
test dx, dx
jne 0x423f92
xor eax, eax
jmp 0x423fc7
push 0x80070057
call fcn.00404270
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x424072
fld dword [0x58d550]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fld st(0)
call fcn.00538280
fmul qword [0x58d4e8]
mov edi, eax
fsub qword [0x58d548]
fld qword [0x58d540]
fmul st(1)
fmul st(1)
fmul st(1)
fld st(1)
fmul qword [0x58d538]
fmul st(2)
fsubp st(1)
fxch st(1)
fmul qword [0x58d4c8]
fsubp st(1)
fadd qword [0x58d530]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
call fcn.00538280
mov ebx, dword [esi + 0x100]
lea edx, [eax + 2]
push edx
mov edx, dword [ebx + 4]
lea ecx, [edi + 2]
push ecx
push eax
push edi
push edx
call dword [sym.imp.gdi32.dll_Ellipse]
fld dword [esp + 0x14]
fadd qword [0x58d4b8]
fstp dword [esp + 0x14]
fld dword [0x58d52c]
fld dword [esp + 0x14]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jnp 0x423fe2
jmp 0x424188
lea eax, [esp + 0x2c]
push 0x5888a4
push eax
call fcn.0040c990
add esp, 8
test al, al
je 0x42418a
fld dword [0x58d528]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
fld st(0)
call fcn.00538280
fsub qword [0x58d520]
fld qword [0x58d4a0]
mov edi, eax
fmul st(1)
fmul st(1)
fxch st(1)
fmul qword [0x58d498]
fsubp st(1)
fadd qword [0x58d518]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
call fcn.00538280
mov ebx, dword [esi + 0x100]
lea edx, [eax + 2]
push edx
lea ecx, [edi + 2]
push ecx
mov ecx, dword [ebx + 4]
push eax
push edi
push ecx
call dword [sym.imp.gdi32.dll_Ellipse]
fld dword [esp + 0x10]
fadd qword [0x58d4b8]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
fcom qword [0x58d510]
fnstsw ax
test ah, 5
jnp 0x42409a
fstp st(0)
fld dword [0x58d508]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
fld st(0)
call fcn.00538280
fsub qword [0x58d520]
fld qword [0x58d480]
mov edi, eax
fmul st(1)
fld st(1)
fmul qword [0x58d478]
fmulp st(2)
fsubrp st(1)
fsub qword [0x58d500]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
call fcn.00538280
mov ebx, dword [esi + 0x100]
lea edx, [eax + 2]
push edx
mov edx, dword [ebx + 4]
lea ecx, [edi + 2]
push ecx
push eax
push edi
push edx
call dword [sym.imp.gdi32.dll_Ellipse]
fld dword [esp + 0x10]
fadd qword [0x58d4b8]
fstp dword [esp + 0x10]
fld dword [esp + 0x10]
fcom qword [0x58d4f8]
fnstsw ax
test ah, 5
jnp 0x424119
fstp st(0)
mov ecx, 0x2ee
mov eax, 0x3ca
mov edx, 0x8c
mov edi, 0x19
mov dword [esp + 0x90], ecx
mov dword [esp + 0x94], edi
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], edx
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], edi
mov dword [esp + 0x68], eax
mov dword [esp + 0x6c], 0x3c
mov dword [esp + 0x80], ecx
mov dword [esp + 0x84], 0x41
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], 0x64
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], 0x69
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], edx
call fcn.00437cf1
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x424220
push 0x80004005
call fcn.00404270
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x10], eax
mov byte [esp + 0xb0], 6
mov eax, dword [esi + 0xb60]
cdq
mov ecx, 0x3c
idiv ecx
push 3
push 0x58b590
lea ecx, [esp + 0x18]
mov dword [esp + 0x20], edx
mov edi, eax
call fcn.004042c0
mov ecx, dword [esi + 0x100]
mov edx, dword [ecx]
mov eax, dword [edx + 0x28]
lea ebx, [esi + 0x13c]
push ebx
call eax
mov ecx, dword [esi + 0x100]
mov edx, dword [ecx]
mov eax, dword [edx + 0x30]
push 0
call eax
mov ecx, dword [esi + 0x100]
mov edx, dword [ecx]
mov edx, dword [edx + 0x68]
push 0x20
lea eax, [esp + 0x64]
push eax
mov eax, dword [esp + 0x18]
mov eax, dword [eax - 0xc]
push eax
mov eax, dword [esp + 0x1c]
push eax
call edx
mov eax, dword [esp + 0x18]
push eax
push edi
cmp edi, 0xa
jge 0x4242c3
cmp eax, 0xa
jge 0x4242b7
push 0x58b598
jmp 0x4242d9
push str._________0_d:_d
lea ecx, [esp + 0x1c]
push ecx
jmp 0x4242de
cmp eax, 0xa
jge 0x4242d4
push str.__________d:0_d
lea edx, [esp + 0x1c]
push edx
jmp 0x4242de
push str.__________d:_d
lea eax, [esp + 0x1c]
push eax
call fcn.00403cd0
mov ecx, dword [esi + 0x100]
mov edx, dword [ecx]
mov eax, dword [edx + 0x28]
add esp, 0x10
lea edi, [esi + 0x134]
push edi
call eax
mov ecx, dword [esi + 0x100]
mov edx, dword [ecx]
mov edx, dword [edx + 0x68]
push 0x20
lea eax, [esp + 0x64]
push eax
mov eax, dword [esp + 0x18]
mov eax, dword [eax - 0xc]
push eax
mov eax, dword [esp + 0x1c]
push eax
call edx
push 3
push 0x58b61c
lea ecx, [esp + 0x18]
call fcn.004042c0
mov ecx, dword [esi + 0x100]
mov eax, dword [ecx]
mov edx, dword [eax + 0x28]
push ebx
call edx
mov ecx, dword [esi + 0x100]
mov edx, dword [ecx]
mov edx, dword [edx + 0x68]
push 0x20
lea eax, [esp + 0x84]
push eax
mov eax, dword [esp + 0x18]
mov eax, dword [eax - 0xc]
push eax
mov eax, dword [esp + 0x1c]
push eax
call edx
mov eax, dword [esi + 0x94]
mov ecx, dword [esi + 0xb64]
push eax
push ecx
lea edx, [esp + 0x18]
push 0x58b624
push edx
call fcn.00403cd0
mov ecx, dword [esi + 0x100]
mov eax, dword [ecx]
mov edx, dword [eax + 0x28]
add esp, 0x10
push edi
call edx
mov ecx, dword [esi + 0x100]
mov edx, dword [ecx]
mov edx, dword [edx + 0x68]
push 0x20
lea eax, [esp + 0x84]
push eax
mov eax, dword [esp + 0x18]
mov eax, dword [eax - 0xc]
push eax
mov eax, dword [esp + 0x1c]
push eax
call edx
push 3
push 0x58b644
lea ecx, [esp + 0x18]
call fcn.004042c0
mov ecx, dword [esi + 0x100]
mov eax, dword [ecx]
mov edx, dword [eax + 0x28]
push ebx
call edx
mov ecx, dword [esi + 0x100]
mov eax, dword [esp + 0x10]
mov ebx, dword [ecx]
push 0x20
lea edx, [esp + 0x74]
push edx
mov edx, dword [eax - 0xc]
push edx
push eax
mov eax, dword [ebx + 0x68]
call eax
mov ecx, dword [esi + 0xb68]
push ecx
lea edx, [esp + 0x14]
push 0x58b64c
push edx
call fcn.00403cd0
mov ecx, dword [esi + 0x100]
mov eax, dword [ecx]
mov edx, dword [eax + 0x28]
add esp, 0xc
push edi
call edx
mov edi, dword [esp + 0x10]
mov eax, dword [edi - 0xc]
mov ecx, dword [esi + 0x100]
mov edx, dword [ecx]
push 0x20
lea ebx, [esp + 0x74]
push ebx
push eax
mov eax, dword [edx + 0x68]
push edi
call eax
mov eax, dword [esi + 0xb6c]
cmp eax, 0xffffffff
je 0x4245d8
push eax
lea ecx, [esp + 0x14]
push 0x5892b4
push ecx
call fcn.00403cd0
mov ecx, dword [esi + 0x100]
mov edx, dword [ecx]
mov edx, dword [edx + 0x28]
add esp, 0xc
lea eax, [esi + 0x12c]
push eax
call edx
mov ecx, dword [esi + 0x100]
mov eax, dword [ecx]
mov edx, dword [eax + 0x30]
push 0xff
call edx
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
lea edi, [edx + 0xdc]
lea ecx, [eax + 0x78]
add edx, 0x1e
mov dword [esp + 0x50], edx
mov edx, dword [esp + 0x10]
push 1
mov dword [esp + 0x58], eax
mov dword [esp + 0x60], ecx
mov ecx, dword [esi + 0x100]
mov dword [esp + 0x5c], edi
mov eax, dword [edx - 0xc]
mov edi, dword [ecx]
lea ebx, [esp + 0x54]
push ebx
push eax
mov eax, dword [edi + 0x68]
push edx
call eax
mov eax, dword [esi + 0xd0]
lea edi, [esi + 0xcc]
xor ecx, ecx
cmp eax, ecx
je 0x4244f1
mov dword [edi + 4], ecx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], ecx
mov dword [edi + 0x10], ecx
mov dword [edi + 0x18], ecx
mov dword [edi + 0x14], ecx
or ecx, 0xffffffff
push eax
mov dword [edi + 0x20], ecx
mov dword [edi + 0x24], ecx
mov word [edi + 0x1c], 0
call dword [sym.imp.gdi32.dll_DeleteObject]
mov eax, dword [0x5b6a8c]
push 0x588b50
push 0x49b
push eax
mov dword [esp + 0x24], eax
call dword [sym.imp.kernel32.dll_FindResourceW]
mov ebx, eax
test ebx, ebx
je 0x42459a
mov ecx, dword [esp + 0x18]
push ebx
push ecx
call dword [sym.imp.kernel32.dll_SizeofResource]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x42459a
mov edx, dword [esp + 0x18]
push ebx
push edx
call dword [sym.imp.kernel32.dll_LoadResource]
mov dword [esp + 0x18], eax
test eax, eax
je 0x42459a
mov eax, dword [esp + 0x1c]
push eax
push 0
call dword [sym.imp.kernel32.dll_GlobalAlloc]
mov ebx, eax
push ebx
call dword [sym.imp.kernel32.dll_GlobalLock]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
push ecx
push edx
push eax
call fcn.00538f30
add esp, 0xc
lea eax, [esp + 0x24]
push eax
push 0
push ebx
mov dword [esp + 0x30], 0
call dword [sym.imp.ole32.dll_CreateStreamOnHGlobal]
test eax, eax
jne 0x42458c
mov ecx, dword [esp + 0x24]
push ecx
mov ecx, edi
call fcn.00407520
push ebx
call dword [sym.imp.kernel32.dll_GlobalUnlock]
push ebx
call dword [sym.imp.kernel32.dll_GlobalFree]
call fcn.004069d0
mov esi, dword [esi + 0x100]
test esi, esi
jne 0x4245ad
xor eax, eax
jmp 0x4245b0
mov eax, dword [esi + 4]
mov ecx, dword [edi + 0xc]
mov ebx, dword [edi + 0x10]
mov edx, dword [esp + 0x54]
mov esi, dword [esp + 0x50]
push ecx
push ebx
push ecx
add edx, 0x64
add esi, 0x14
push edx
push esi
mov esi, edi
call fcn.004121e0
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x10]
mov ebx, dword [0x5b6a90]
call fcn.0044271b
mov dword [eax + 0xc], ebx
mov eax, dword [ebp + 8]
test eax, eax
jne 0x424611
mov ebx, dword [sym.imp.user32.dll_InvalidateRect]
push eax
mov eax, dword [esi + 0x20]
lea edx, [esp + 0x44]
push edx
push eax
call ebx
mov edx, dword [esi + 0x20]
push 0
lea ecx, [esp + 0x94]
push ecx
push edx
call ebx
jmp 0x42463c
cmp eax, 1
jne 0x424626
mov ecx, dword [esi + 0x20]
push 0
lea eax, [esp + 0x94]
push eax
push ecx
jmp 0x424636
cmp eax, 2
jne 0x42463c
mov eax, dword [esi + 0x20]
push 0
lea edx, [esp + 0x44]
push edx
push eax
call dword [sym.imp.user32.dll_InvalidateRect]
lea eax, [edi - 0x10]
mov byte [esp + 0xb0], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x424660
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xb0], 3
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x424688
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xb0], 2
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4246b0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xb0], 1
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4246d8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0xb0], 0
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x424700
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0xb0], 0xffffffff
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42472b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0xa8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x90]
xor ecx, esp
call fcn.00534a4b
mov esp, ebp
pop ebp
ret 4