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

Disassembly:
push 0xffffffffffffffff
push 0x5834d0
mov eax, dword fs:[0]
push eax
sub esp, 0x54
push ebx
push ebp
push esi
push edi
mov eax, dword [0x61c948]
xor eax, esp
push eax
lea eax, [esp + 0x68]
mov dword fs:[0], eax
mov esi, ecx
mov edi, dword [esp + 0x80]
mov dword [esp + 0x44], 0
mov ebx, dword [esp + 0x7c]
mov ebp, dword [ebx - 0xc]
xor ecx, ecx
mov eax, ebp
mov edx, 0xc
mul edx
seto cl
mov dword [esp + 0x70], 1
mov dword [esp + 0x18], ebp
neg ecx
or ecx, eax
xor eax, eax
add ecx, 4
setb al
neg eax
or eax, ecx
push eax
call fcn.0044ff68
add esp, 4
test eax, eax
je 0x53f00a
push 0x4baba0
push fcn.004bab50
push ebp
lea ebx, [eax + 4]
push 0xc
push ebx
mov dword [eax], ebp
call fcn.00472986
mov ecx, ebx
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x7c]
jmp 0x53f010
xor ecx, ecx
mov dword [esp + 0x14], ecx
xor eax, eax
test ebp, ebp
jle 0x53f033
add ecx, 8
test eax, eax
jl 0x53f04e
cmp eax, dword [ebx - 0xc]
jg 0x53f04e
mov dx, word [ebx + eax*2]
mov word [ecx], dx
add eax, 1
add ecx, 0xc
cmp eax, ebp
jl 0x53f019
cmp dword [ebx - 0xc], 0
mov ebp, dword [ebx - 0x10]
lea eax, [ebx - 0x10]
je 0x53f08d
cmp dword [eax + 0xc], 0
lea ecx, [eax + 0xc]
jge 0x53f066
cmp dword [ebx - 8], 0
jge 0x53f058
push 0x80070057
call fcn.0040a460
mov dword [ebx - 0xc], 0
mov word [ebx], 0
jmp 0x53f08d
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53f07c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [ebp]
mov eax, dword [edx + 0xc]
mov ecx, ebp
call eax
add eax, 0x10
mov dword [esp + 0x7c], eax
movzx eax, word [edi + 0x10]
movzx ecx, word [edi + 0x12]
movzx edx, word [edi + 0xc]
movzx ebp, word [edi + 0xe]
push eax
push ecx
mov ecx, dword [esp + 0xa8]
push edx
push ebp
push ecx
call dword [sym.imp.USER32.dll_SetRect]
mov al, byte [edi + 4]
test al, al
mov cl, byte [edi + 5]
mov ebp, 2
jne 0x53f0c9
test cl, cl
jge 0x53f0de
mov ebp, 1
jmp 0x53f12c
jle 0x53f0cf
test cl, cl
jl 0x53f12c
test al, al
jge 0x53f0e9
test cl, cl
jge 0x53f0e7
mov ebp, 3
jmp 0x53f12c
jle 0x53f105
mov ebp, 4
jmp 0x53f12c
test al, al
jle 0x53f0f6
test cl, cl
jle 0x53f0f6
mov ebp, 5
jmp 0x53f12c
test al, al
jge 0x53f112
test cl, cl
jle 0x53f110
mov ebp, 6
jmp 0x53f12c
test cl, cl
jne 0x53f12c
mov ebp, 7
jmp 0x53f12c
test al, al
jle 0x53f11f
test cl, cl
jne 0x53f11f
mov ebp, 8
jmp 0x53f12c
test al, al
jge 0x53f12c
test cl, cl
jne 0x53f12c
mov ebp, 9
mov eax, dword [esp + 0x7c]
add eax, 0xfffffff0
push eax
call fcn.00409dc0
lea ebx, [eax + 0x10]
mov dword [esp + 0x48], ebx
push ebx
push ebp
lea edx, [esp + 0x88]
push str._an_d_s
push edx
mov byte [esp + 0x84], 2
call fcn.00409fe0
lea eax, [ebx - 0x10]
add esp, 0x14
mov byte [esp + 0x70], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53f180
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, dword [esp + 0x84]
push str.serif
push ebx
call fcn.00472d17
add esp, 8
test eax, eax
jne 0x53f1a2
push 0xf
push str.Times_New_Roman
jmp 0x53f1d6
push str.sans_serif
push ebx
call fcn.00472d17
add esp, 8
test eax, eax
jne 0x53f1bd
push 5
push 0x5919d0
jmp 0x53f1d6
push str.monospace
push ebx
call fcn.00472d17
add esp, 8
test eax, eax
jne 0x53f1e2
push 0xb
push str.Courier_New
lea ecx, [esp + 0x8c]
call fcn.0040a080
mov eax, dword [esp + 0x7c]
add eax, 0xfffffff0
push eax
call fcn.00409dc0
lea ebp, [eax + 0x10]
mov dword [esp + 0x48], ebp
mov ecx, dword [esp + 0x88]
push ebp
push ecx
lea edx, [esp + 0x88]
push str._fn_s_s
push edx
mov byte [esp + 0x84], 3
call fcn.00409fe0
add ebp, 0xfffffff0
add esp, 0x14
mov byte [esp + 0x70], 1
lea eax, [ebp + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x53f23e
mov ecx, dword [ebp]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebp
call eax
call fcn.0045881f
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x53f258
push 0x80004005
call fcn.0040a460
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
movzx ecx, byte [edi + 0x1f]
movzx eax, byte [edi + 0x1c]
mov edx, 0xff
sub edx, ecx
movzx ecx, byte [edi + 0x1d]
push edx
movzx edx, byte [edi + 0x1e]
push eax
push ecx
push edx
lea eax, [esp + 0x30]
push str.1c_02x_02x_02x1a_02x
push eax
mov byte [esp + 0x88], 4
call fcn.00409fe0
lea ecx, [esp + 0x94]
push ecx
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x58]
push eax
call fcn.00467732
add esp, 0x24
push eax
lea ecx, [esp + 0x80]
mov byte [esp + 0x74], 5
call fcn.0040a4f0
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
mov byte [esp + 0x70], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53f2eb
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x7c]
add eax, 0xfffffff0
push eax
call fcn.00409dc0
lea ebp, [eax + 0x10]
mov dword [esp + 0x48], ebp
movzx ecx, byte [edi + 0x1f]
movzx eax, byte [edi + 0x1c]
mov edx, 0xff
sub edx, ecx
movzx ecx, byte [edi + 0x1d]
push edx
movzx edx, byte [edi + 0x1e]
push eax
push ecx
push edx
push ebp
lea eax, [esp + 0x94]
push str._s2c_02x_02x_02x2a_02x
push eax
mov byte [esp + 0x90], 6
call fcn.00409fe0
add ebp, 0xfffffff0
add esp, 0x20
mov byte [esp + 0x70], 4
lea ecx, [ebp + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53f35a
mov ecx, dword [ebp]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebp
call edx
call fcn.0045881f
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x53f374
push 0x80004005
call fcn.0040a460
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
movzx ecx, byte [edi + 0x1b]
push ecx
lea edx, [esp + 0x2c]
push str._fs_d
push edx
mov byte [esp + 0x7c], 7
call fcn.00409fe0
lea eax, [esp + 0x88]
push eax
lea ecx, [esp + 0x38]
push ecx
lea edx, [esp + 0x4c]
push edx
call fcn.00467732
add esp, 0x18
push eax
lea ecx, [esp + 0x80]
mov byte [esp + 0x74], 8
call fcn.0040a4f0
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
mov byte [esp + 0x70], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53f3ee
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.0045881f
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x53f408
push 0x80004005
call fcn.0040a460
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
movzx eax, byte [edi + 0x1a]
mov ecx, eax
mov edx, eax
shr ecx, 2
and ecx, 1
push ecx
shr edx, 1
and edx, 1
push edx
and eax, 1
push eax
lea eax, [esp + 0x30]
push str._b_di_du_d
push eax
mov byte [esp + 0x84], 9
call fcn.00409fe0
lea ecx, [esp + 0x90]
push ecx
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x54]
push eax
call fcn.00467732
add esp, 0x20
push eax
lea ecx, [esp + 0x80]
mov byte [esp + 0x74], 0xa
call fcn.0040a4f0
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
mov byte [esp + 0x70], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53f499
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esp + 0x88], 8
lea ebp, [edi + 8]
mov dword [esp + 0x2c], ebp
jle 0x53fb69
mov edi, edi
movzx ecx, byte [esi + 2]
movzx edx, byte [esi + 3]
xor eax, eax
mov ah, byte [esi]
add esi, 4
add esi, 4
mov al, byte [esi - 7]
shl eax, 8
or eax, ecx
xor ecx, ecx
mov ch, byte [esi - 4]
shl eax, 8
or eax, edx
movzx edx, byte [esi - 2]
sub dword [esp + 0x88], eax
mov cl, byte [esi - 3]
sub eax, 8
add eax, esi
mov dword [esp + 0x44], eax
shl ecx, 8
or ecx, edx
movzx edx, byte [esi - 1]
shl ecx, 8
or ecx, edx
cmp ecx, 0x7374796c
jne 0x53f6cb
xor eax, eax
mov ah, byte [esi]
add esi, 2
mov al, byte [esi - 1]
movzx eax, ax
test ax, ax
jbe 0x53fb50
jmp 0x53f520
xor ecx, ecx
mov ch, byte [esi]
add esi, 2
xor edx, edx
mov dh, byte [esi]
add eax, 0xffff
add esi, 4
mov dword [esp + 0x3c], eax
mov cl, byte [esi - 5]
movzx eax, byte [esi]
mov dl, byte [esi - 3]
add esi, 1
add esi, 1
movzx ecx, cx
mov edi, esi
movzx ebx, dx
movzx edx, ax
movzx eax, byte [esi - 1]
mov dword [esp + 0x30], edx
movzx edx, ax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x34], edx
movzx edx, bx
add esi, 4
cmp edx, eax
mov dword [esp + 0x38], ecx
jle 0x53f575
movzx ebx, ax
cmp cx, bx
jae 0x53f6b9
call fcn.0045881f
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x53f24e
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
movzx ecx, byte [edi + 3]
movzx eax, byte [edi]
mov edx, 0xff
sub edx, ecx
movzx ecx, byte [edi + 1]
push edx
movzx edx, byte [edi + 2]
push eax
push ecx
push edx
lea eax, [esp + 0x2c]
push str.1c_02x_02x_02x1a_02x
push eax
mov byte [esp + 0x88], 0xb
call fcn.00409fe0
movzx eax, word [esp + 0x50]
mov ebp, dword [esp + 0x2c]
lea ecx, [eax + eax*2]
mov eax, dword [esp + 0x34]
lea edi, [ebp + ecx*4]
mov ecx, dword [eax - 0xc]
add esp, 0x18
push ecx
push eax
mov ecx, edi
call fcn.00408ab0
mov ecx, dword [esp + 0x20]
movzx eax, bx
lea edx, [eax + eax*2]
mov eax, dword [ecx - 0xc]
push eax
lea ebp, [ebp + edx*4 - 8]
push ecx
mov ecx, ebp
call fcn.00408ab0
movzx eax, word [esp + 0x34]
push eax
lea ecx, [esp + 0x20]
push str._fs_d
push ecx
call fcn.00409fe0
mov eax, dword [esp + 0x28]
mov ecx, dword [eax - 0xc]
add esp, 0xc
push ecx
push eax
mov ecx, edi
call fcn.00408ab0
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, ebp
call fcn.00408ab0
movzx eax, word [esp + 0x30]
mov edx, eax
shr edx, 2
mov ecx, eax
and edx, 1
push edx
shr ecx, 1
and ecx, 1
push ecx
and eax, 1
push eax
lea edx, [esp + 0x28]
push str._b_di_du_d
push edx
call fcn.00409fe0
mov ebx, dword [esp + 0x30]
mov eax, dword [ebx - 0xc]
add esp, 0x14
push eax
push ebx
mov ecx, edi
call fcn.00408ab0
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, ebp
call fcn.00408ab0
add ebx, 0xfffffff0
mov byte [esp + 0x70], 9
lea eax, [ebx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x53f6b5
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov ebp, dword [esp + 0x2c]
mov eax, dword [esp + 0x3c]
test ax, ax
ja 0x53f520
jmp 0x53fb50
cmp ecx, 0x68636c72
jne 0x53f6de
mov ebp, esi
mov dword [esp + 0x2c], ebp
jmp 0x53fb50
cmp ecx, 0x686c6974
jne 0x53f7f3
xor ecx, ecx
mov ch, byte [esi]
mov eax, dword [esp + 0x18]
xor edx, edx
mov dh, byte [esi + 2]
add esi, 2
mov cl, byte [esi - 1]
mov dl, byte [esi + 1]
movzx edi, cx
movzx ebx, dx
movzx ecx, bx
cmp ecx, eax
jle 0x53f710
movzx ebx, ax
cmp di, bx
jae 0x53fb50
call fcn.0045881f
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x53f24e
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x30], eax
movzx ecx, byte [ebp + 3]
movzx eax, byte [ebp]
mov edx, 0xff
sub edx, ecx
movzx ecx, byte [ebp + 1]
push edx
movzx edx, byte [ebp + 2]
push eax
push ecx
push edx
lea eax, [esp + 0x40]
push str.3c_02x_02x_02x3a_02x
push eax
mov byte [esp + 0x88], 0xc
call fcn.00409fe0
mov edx, dword [esp + 0x2c]
movzx eax, di
mov edi, dword [esp + 0x48]
lea ecx, [eax + eax*2]
mov eax, dword [edi - 0xc]
add esp, 0x18
lea esi, [edx + ecx*4]
push eax
push edi
mov ecx, esi
call fcn.00408ab0
mov ecx, dword [esp + 0x14]
movzx eax, bx
lea eax, [eax + eax*2]
lea ebx, [ecx + eax*4 - 8]
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx - 0xc]
push eax
push ecx
mov ecx, ebx
call fcn.00408ab0
push 0xa
push str._bord0.1
mov ecx, esi
call fcn.00408ab0
push 7
push str._bord
mov ecx, ebx
call fcn.00408ab0
add edi, 0xfffffff0
mov byte [esp + 0x70], 9
lea edx, [edi + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x53fb50
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
jmp 0x53fb50
cmp ecx, 0x626c6e6b
jne 0x53f90d
xor ecx, ecx
mov ch, byte [esi]
add esi, 2
xor eax, eax
mov ah, byte [esi]
mov cl, byte [esi - 1]
mov al, byte [esi + 1]
movzx edx, cx
mov ecx, dword [esp + 0x18]
movzx eax, ax
movzx esi, ax
cmp esi, ecx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x1c], eax
jle 0x53f830
movzx eax, cx
mov dword [esp + 0x1c], eax
cmp dx, ax
jae 0x53fb50
xor esi, esi
cmp dword [esp + 0x9c], esi
mov ebx, 0xff
jle 0x53f8ee
call fcn.0045881f
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x53f24e
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x30], eax
push ebx
lea edi, [esi + 0x2ee]
push edi
push esi
lea ecx, [esp + 0x3c]
push str._t__d___d___alphaH_02x_
push ecx
mov byte [esp + 0x84], 0xd
call fcn.00409fe0
movzx eax, word [esp + 0x50]
mov esi, dword [esp + 0x44]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x28]
add esp, 0x14
lea ecx, [eax + edx*4]
mov eax, dword [esi - 0xc]
push eax
push esi
call fcn.00408ab0
add esi, 0xfffffff0
mov byte [esp + 0x70], 9
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53f8d2
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
mov eax, 0xff
mov esi, edi
sub eax, ebx
cmp esi, dword [esp + 0x9c]
mov ebx, eax
jl 0x53f84d
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x14]
movzx eax, ax
lea ecx, [eax + eax*2]
push 8
lea ecx, [edx + ecx*4 - 8]
push str._alpha
call fcn.00408ab0
jmp 0x53fb50
cmp ecx, 0x74626f78
jne 0x53f953
mov eax, dword [esp + 0xa0]
xor ecx, ecx
mov ch, byte [esi]
xor edx, edx
add esi, 2
add esi, 2
add esi, 2
mov cl, byte [esi - 5]
mov dword [eax + 4], ecx
mov dh, byte [esi - 4]
xor ecx, ecx
mov dl, byte [esi - 3]
mov dword [eax], edx
mov ch, byte [esi - 2]
xor edx, edx
mov cl, byte [esi - 1]
mov dword [eax + 0xc], ecx
mov dh, byte [esi]
mov dl, byte [esi + 1]
mov dword [eax + 8], edx
jmp 0x53fb50
cmp ecx, 0x6b726f6b
jne 0x53fb50
mov eax, dword [esp + 0x80]
test dword [eax], 0x800
jne 0x53fb50
movzx edx, byte [esi + 2]
movzx eax, byte [esi + 3]
xor ecx, ecx
mov ch, byte [esi]
add esi, 4
add esi, 2
mov cl, byte [esi - 5]
shl ecx, 8
or ecx, edx
shl ecx, 8
or ecx, eax
mov edi, ecx
xor ecx, ecx
mov ch, byte [esi - 2]
mov cl, byte [esi - 1]
movzx eax, cx
test ax, ax
mov dword [esp + 0x30], eax
jbe 0x53fb50
movzx eax, byte [esi + 2]
movzx ecx, byte [esi + 3]
xor edx, edx
mov dh, byte [esi]
add esi, 4
add dword [esp + 0x30], 0xffff
add esi, 2
add esi, 2
mov dl, byte [esi - 7]
shl edx, 8
or edx, eax
shl edx, 8
or edx, ecx
mov dword [esp + 0x38], edx
xor edx, edx
mov dh, byte [esi - 4]
mov ecx, dword [esp + 0x18]
xor eax, eax
mov ah, byte [esi - 2]
mov dl, byte [esi - 3]
mov al, byte [esi - 1]
movzx ebx, dx
movzx eax, ax
movzx edx, ax
cmp edx, ecx
mov dword [esp + 0x34], eax
jle 0x53fa05
movzx eax, cx
mov dword [esp + 0x34], eax
cmp bx, ax
jae 0x53fb40
call fcn.0045881f
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
je 0x53f24e
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x38]
sub ecx, edi
mov eax, 0xcccccccd
mul ecx
shr edx, 3
push edx
mov eax, 0xcccccccd
mul edi
shr edx, 3
push edx
lea edx, [esp + 0x24]
push str.kt_dkf_d
push edx
mov byte [esp + 0x80], 0xe
call fcn.00409fe0
mov ecx, dword [esp + 0x24]
movzx eax, bx
lea eax, [eax + eax*2]
lea edi, [ecx + eax*4]
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax - 0xc]
add esp, 0x10
push ecx
push eax
mov ecx, edi
call fcn.00408ab0
movzx edx, byte [ebp + 3]
movzx ecx, byte [ebp]
mov eax, 0xff
sub eax, edx
movzx edx, byte [ebp + 1]
push eax
movzx eax, byte [ebp + 2]
push ecx
push edx
push eax
lea ecx, [esp + 0x2c]
push str.1c_02x_02x_02x1a_02x
push ecx
call fcn.00409fe0
mov ebx, dword [esp + 0x34]
mov eax, dword [ebx - 0xc]
add esp, 0x18
push eax
push ebx
mov ecx, edi
call fcn.00408ab0
lea edx, [esp + 0x20]
push edx
lea eax, [esp + 0x44]
push str.kt
push eax
call fcn.0040f160
add esp, 0xc
movzx ecx, word [esp + 0x34]
mov edx, dword [esp + 0x14]
mov eax, dword [eax]
lea ecx, [ecx + ecx*2]
lea ecx, [edx + ecx*4 - 8]
mov edx, dword [eax - 0xc]
push edx
push eax
mov byte [esp + 0x78], 0xf
call fcn.00408ab0
mov eax, dword [esp + 0x40]
add eax, 0xfffffff0
mov byte [esp + 0x70], 0xe
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53fb1f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [esp + 0x70], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53fb40
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp word [esp + 0x30], 0
mov edi, dword [esp + 0x38]
ja 0x53f9ab
cmp dword [esp + 0x88], 8
mov esi, dword [esp + 0x44]
jg 0x53f4b0
mov edi, dword [esp + 0x80]
test dword [edi], 0x800
je 0x53fcf9
call fcn.0045881f
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x53fb8f
push 0x80004005
call fcn.0040a460
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
movzx ecx, byte [ebp + 3]
movzx eax, byte [ebp]
mov edx, 0xff
sub edx, ecx
movzx ecx, byte [ebp + 1]
push edx
movzx edx, byte [ebp + 2]
push eax
push ecx
push edx
lea eax, [esp + 0x2c]
push str.1c_02x_02x_02x1a_02x
push eax
mov byte [esp + 0x88], 0x10
call fcn.00409fe0
mov ebp, dword [esp + 0x34]
mov eax, dword [ebp - 0xc]
add esp, 0x18
push eax
push ebp
lea ecx, [esp + 0x84]
call fcn.00408ab0
mov esi, dword [esp + 0x18]
xor edx, edx
test esi, esi
mov dword [esp + 0x38], edx
jl 0x53fc16
mov eax, dword [esp + 0x14]
add eax, 8
lea ecx, [esi + 1]
cmp word [eax], 0xa
jne 0x53fc0a
add edx, 1
add eax, 0xc
sub ecx, 1
jne 0x53fc01
mov dword [esp + 0x38], edx
cmp esi, edx
jle 0x53fcd8
mov eax, dword [esp + 0x9c]
add eax, 0xfffffe0c
xor ecx, ecx
test eax, eax
setle cl
xor esi, esi
sub ecx, 1
and ecx, eax
mov dword [esp + 0x44], ecx
fild dword [esp + 0x44]
xor eax, eax
cmp dword [esp + 0x18], eax
fdiv qword [0x5edba8]
fstp dword [esp + 0x40]
jl 0x53fcd8
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x34], eax
mov ebx, 0xc
cmp esi, ecx
je 0x53fc73
mov edx, dword [esp + 0x14]
cmp word [edx + ebx - 4], 0xa
jne 0x53fcce
mov edx, dword [esp + 0x18]
sub edx, dword [esp + 0x38]
mov ecx, esi
sub ecx, eax
mov dword [esp + 0x44], ecx
fild dword [esp + 0x44]
mov dword [esp + 0x44], edx
fmul dword [esp + 0x40]
fidiv dword [esp + 0x44]
call fcn.00472660
push eax
lea eax, [esp + 0x20]
push str.kf_d
push eax
call fcn.00409fe0
mov ebp, dword [esp + 0x28]
mov eax, dword [ebp - 0xc]
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x40]
add esp, 0xc
push eax
add ecx, edx
push ebp
call fcn.00408ab0
mov ecx, dword [esp + 0x18]
lea eax, [esi + 1]
mov dword [esp + 0x34], ebx
add esi, 1
add ebx, 0xc
cmp esi, ecx
jle 0x53fc65
lea eax, [ebp - 0x10]
mov byte [esp + 0x70], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53fcf9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esp + 0x18], 0
mov dword [esp + 0x38], 0
jle 0x53fdc5
mov ebp, dword [esp + 0x14]
add ebp, 4
mov eax, dword [ebp - 4]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x84]
call fcn.00408ab0
movzx ecx, word [ebp + 4]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x7c]
mov ebx, dword [ecx - 0xc]
mov eax, dword [ecx - 8]
mov edx, 1
sub edx, dword [ecx - 4]
lea esi, [ebx + 1]
sub eax, esi
or eax, edx
jge 0x53fd5b
push esi
lea ecx, [esp + 0x80]
call fcn.0040a2d0
mov ecx, dword [esp + 0x7c]
test esi, esi
mov dx, word [esp + 0x44]
mov word [ecx + ebx*2], dx
jl 0x53f04e
cmp esi, dword [ecx - 8]
jg 0x53f04e
mov dword [ecx - 0xc], esi
mov word [ecx + esi*2], 0
test dword [edi], 0x20000
je 0x53fd99
push 2
push 0x5d6b00
lea ecx, [esp + 0x84]
call fcn.00408ab0
mov eax, dword [ebp]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x84]
call fcn.00408ab0
mov eax, dword [esp + 0x38]
add eax, 1
add ebp, 0xc
cmp eax, dword [esp + 0x18]
mov dword [esp + 0x38], eax
jl 0x53fd13
cmp dword [esp + 0x14], 0
je 0x53fded
mov eax, dword [esp + 0x14]
mov ecx, dword [eax - 4]
lea esi, [eax - 4]
push 0x4baba0
push ecx
push 0xc
push eax
call fcn.00472923
push esi
call fcn.0044ff63
add esp, 4
mov esi, dword [esp + 0xa0]
push esi
call dword [sym.imp.USER32.dll_IsRectEmpty]
test eax, eax
je 0x53fe1a
mov edx, dword [esp + 0x90]
mov eax, dword [esp + 0x8c]
push edx
push eax
push 0
push 0
push esi
call dword [sym.imp.USER32.dll_SetRect]
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x94]
push ecx
push edx
push esi
call dword [sym.imp.USER32.dll_OffsetRect]
mov ecx, dword [esi + 4]
mov eax, dword [esi]
mov edx, dword [esi + 8]
push 0xfffffffffffffffe
mov dword [esp + 0x50], ecx
mov dword [esp + 0x4c], eax
mov eax, dword [esi + 0xc]
push 0xfffffffffffffffe
lea ecx, [esp + 0x50]
push ecx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x60], eax
call dword [sym.imp.USER32.dll_InflateRect]
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x4c]
mov edx, eax
xor ebx, ebx
sub edx, ecx
xor edi, edi
xor ebp, ebp
test edx, edx
mov dword [esp + 0x64], ebx
jle 0x53fe84
mov ebp, ecx
mov ecx, dword [esp + 0x90]
sub ecx, eax
mov dword [esp + 0x64], ecx
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x48]
mov edx, eax
sub edx, ecx
test edx, edx
jle 0x53fe9f
mov ebx, dword [esp + 0x8c]
mov edi, ecx
sub ebx, eax
call fcn.0045881f
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x53feb9
push 0x80004005
call fcn.0040a460
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x30], eax
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 8]
mov eax, dword [esi + 4]
push ecx
mov ecx, dword [esi]
push edx
mov edx, dword [esp + 0x6c]
push eax
push ecx
push edx
push ebp
push ebx
push edi
lea eax, [esp + 0x50]
push 0x5d6aa8
push eax
mov byte [esp + 0x98], 0x11
call fcn.00409fe0
mov esi, dword [esp + 0xa0]
lea ecx, [esp + 0xa4]
push ecx
lea edx, [esp + 0x5c]
push edx
push esi
call fcn.00467732
mov eax, dword [esp + 0x64]
add eax, 0xfffffff0
add esp, 0x34
mov byte [esp + 0x70], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53ff39
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x70], 7
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53ff5e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
mov byte [esp + 0x70], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53ff83
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0x70], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53ffa8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x7c]
add eax, 0xfffffff0
mov byte [esp + 0x70], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53ffcd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x84]
add eax, 0xfffffff0
mov dword [esp + 0x70], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x53fff8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, esi
mov ecx, dword [esp + 0x68]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret