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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xfc
or dword [ebp - 0x84], 0xffffffff
or dword [ebp - 0x78], 0xffffffff
push ebx
push esi
xor esi, esi
push edi
xor ebx, ebx
push 3
pop eax
inc ebx
cmp dword [ebp + 0x28], esi
mov dword [ebp - 0x30], esi
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x5c], esi
mov dword [ebp - 0xd0], esi
mov dword [ebp - 0x98], esi
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x1c], 0x7fff
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x40], eax
mov dword [ebp - 0xf4], esi
mov dword [ebp - 0xfc], esi
mov dword [ebp - 0xa8], esi
mov dword [ebp - 0xbc], ebx
mov dword [ebp - 0x80], esi
mov dword [ebp - 0x6c], esi
mov dword [ebp - 0xac], esi
mov dword [ebp - 0x88], esi
mov dword [ebp - 0xc4], esi
je 0x30010e1d
inc dword [0x30097c60]
push dword [0x30097c60]
push 2
call fcn.30063e2d
push dword [ebp + 0x10]
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov edi, eax
mov eax, dword [edi + 0x8c]
cmp eax, dword [ebp + 0x18]
mov dword [ebp - 0x14], eax
mov ecx, eax
jge 0x30010e3b
mov dword [ebp + 0x18], ecx
sub ecx, dword [edi + 0x90]
mov eax, dword [edi + 0x34]
xor edx, edx
cmp eax, 2
sete dl
mov dword [ebp - 0x14], ecx
mov dword [edi + 0x60], esi
mov dword [edi + 0x64], esi
mov dword [ebp - 0xc8], edx
xor edx, edx
cmp eax, 0x22
sete dl
sub eax, esi
mov dword [ebp - 0x44], edx
je 0x30010e9c
dec eax
dec eax
je 0x30010e9c
sub eax, 0x16
je 0x30010e96
dec eax
dec eax
je 0x30010e88
sub eax, 6
je 0x30010e96
dec eax
dec eax
je 0x30010e9c
mov dword [ebp - 0xa0], ebx
jmp 0x30010ea2
lea eax, [ecx + 1]
cdq
sub eax, edx
sar eax, 1
mov dword [ebp - 0xcc], eax
mov dword [ebp - 0x6c], ebx
mov dword [edi + 0x70], esi
mov dword [ebp - 0xa0], esi
cmp ecx, ebx
jne 0x30010eaf
cmp dword [edi + 0x68], 0xffffffff
jne 0x30010eaf
mov dword [edi + 0x68], esi
lea eax, [edi + 0x10]
test byte [eax], 8
je 0x30010ec3
mov dword [ebp - 0xa8], ebx
mov dword [ebp - 0xbc], esi
push esi
push 8
push eax
call fcn.30067eb7
mov ecx, dword [ebp + 0x18]
sub ecx, dword [ebp + 0x14]
cmp ecx, ebx
mov dword [ebp - 0xb8], ecx
jne 0x30010edf
mov dword [ebp - 0x38], esi
mov eax, dword [edi + 0x34]
add eax, 0xfffffffd
cmp eax, 0x1f
ja case.0x30010ef5.7
movzx eax, byte [eax + 0x30012c82]
jmp dword [eax*4 + 0x30012c5a]
or dword [ebp - 0x40], 0xffffffff
jmp case.0x30010ef5.7
mov dword [ebp - 0x38], ebx
jmp 0x30010ff5
mov eax, dword [ebp + 0x18]
cmp eax, dword [ebp - 0x14]
jge 0x30010f18
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x40], 2
jmp case.0x30010ef5.7
mov dword [ebp - 0x38], 2
jmp 0x30010ff5
mov eax, dword [ebp + 0x18]
cmp eax, dword [ebp - 0x14]
jge 0x30010f3f
mov dword [ebp - 0x38], 2
mov dword [ebp - 0x40], ebx
jmp case.0x30010ef5.7
mov eax, dword [ebp + 0x14]
and eax, 0x80000001
jns 0x30010f56
dec eax
or eax, 0xfffffffe
inc eax
push 0
pop eax
setne al
inc eax
mov dword [ebp - 0x40], eax
jmp 0x30010fe5
mov eax, dword [ebp + 0x14]
and eax, 0x80000001
jns 0x30010f74
dec eax
or eax, 0xfffffffe
inc eax
mov eax, dword [ebp + 0x18]
je 0x30010f83
cmp eax, dword [ebp - 0x14]
jge 0x30010fde
mov dword [ebp - 0x38], ebx
jmp 0x30010fde
cmp eax, dword [ebp - 0x14]
jge 0x30010f8f
mov dword [ebp - 0x38], 2
mov dword [ebp - 0x40], ebx
jmp 0x30010fe5
mov eax, dword [ebp + 0x14]
and eax, 0x80000003
jns 0x30010fa3
dec eax
or eax, 0xfffffffc
inc eax
push 0
pop eax
setne al
inc eax
mov dword [ebp - 0x40], eax
cmp ecx, 2
jmp 0x30010fe7
mov eax, dword [ebp + 0x14]
mov edx, eax
and edx, 0x80000003
jns 0x30010fc4
dec edx
or edx, 0xfffffffc
inc edx
jne 0x30010fcb
mov eax, dword [ebp + 0x18]
jmp 0x30010f83
inc eax
and eax, 0x80000003
jns 0x30010fd8
dec eax
or eax, 0xfffffffc
inc eax
je case.0x30010ef5.6
mov dword [ebp - 0x40], 2
cmp ecx, ebx
jle case.0x30010ef5.7
mov dword [ebp - 0x88], ebx
cmp dword [ebp - 0x38], 3
je 0x30010ffb
mov dword [ebp - 0xbc], esi
xor eax, eax
cmp dword [ebp - 0x14], ebx
mov dword [ebp - 0x10], esi
setg al
cmp dword [ebp - 0xa0], esi
mov dword [ebp - 0x7c], esi
mov dword [ebp - 0x9c], esi
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x54], esi
mov dword [ebp - 0x74], eax
jne 0x30011039
cmp dword [ebp - 0x6c], esi
jne 0x30011039
mov eax, dword [edi + 0x84]
add eax, dword [edi + 0x78]
add eax, dword [edi + 0x70]
mov dword [ebp - 0xa4], eax
jmp 0x3001103f
mov dword [ebp - 0xa4], esi
mov eax, dword [ebp + 0x14]
cmp eax, dword [ebp + 0x18]
mov dword [ebp - 8], eax
jge 0x300112ec
push dword [ebp - 8]
push edi
call fcn.3001c300
mov ebx, eax
lea esi, [ebx + 0x30]
mov eax, dword [esi + 0xc]
sub eax, dword [esi + 4]
cmp dword [ebx + 0x90], 0
mov dword [ebp - 0x64], eax
je 0x300110cd
mov eax, dword [ebx + 0x10]
test eax, eax
jl 0x300110cd
lea ecx, [ebp - 0xb0]
push ecx
push eax
push 0x66
push dword [ebp + 0xc]
call fcn.3003a5eb
test eax, eax
jne 0x300110c9
push dword [ebp - 0xb0]
call dword [sym.imp.KERNEL32.dll_GlobalLock]
movsx ecx, word [edi]
and dword [eax + 0x1c], 0
mov dword [eax + 0x14], ecx
mov ecx, dword [ebp - 8]
mov dword [eax + 0x18], ecx
push dword [ebp - 0xb0]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push dword [ebp - 0xb0]
call fcn.3003bbfd
push dword [ebp - 0xb0]
call fcn.3004ee74
and dword [ebp - 0x30], 0
lea eax, [ebx + 0xd4]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x68], 4
mov eax, dword [ebp - 0x34]
mov eax, dword [eax - 0x10]
cmp eax, 0xffffffff
je 0x30011171
lea ecx, [ebp - 0x70]
push ecx
push eax
push 0x6b
push dword [ebp + 0xc]
call fcn.3003a5eb
test eax, eax
je 0x30011113
push dword [ebp + 0x10]
call fcn.300396fe
mov eax, dword [ebp - 0x34]
or dword [eax - 0x10], 0xffffffff
and dword [eax], 0
jmp 0x30011171
push dword [ebp - 0x70]
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push dword [ebp - 0x70]
mov dword [ebp - 0x94], eax
call fcn.3003bbfd
mov eax, dword [ebp - 0x94]
inc dword [eax + 0x10]
mov eax, dword [ebp - 0x34]
mov eax, dword [eax]
test eax, eax
jl 0x30011160
cmp eax, 1
jg 0x30011160
movsx edx, word [edi]
imul eax, eax, 0x50
mov ecx, dword [ebp - 0x94]
mov dword [eax + ecx + 0x48], edx
mov eax, dword [ebp - 0x34]
mov eax, dword [eax]
mov edx, dword [ebp - 8]
imul eax, eax, 0x50
mov dword [eax + ecx + 0x4c], edx
push dword [ebp - 0x70]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push dword [ebp - 0x70]
call fcn.3004ee74
add dword [ebp - 0x34], 4
dec dword [ebp - 0x68]
jne 0x300110dd
test word [ebx + 0xf4], 0x100
je 0x300112a2
push ebx
push edi
call fcn.3001c5e9
cmp eax, 0xffffffff
je 0x3001128a
lea ecx, [ebp - 0x20]
push ecx
push eax
push 0x65
push dword [ebp + 0xc]
call fcn.3003a5eb
test eax, eax
mov dword [ebp - 0x30], eax
jne 0x30012c47
push dword [ebp - 0x20]
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov dword [ebp - 0x58], eax
mov eax, dword [eax + 0x34]
sub eax, 0x18
je 0x300111ec
dec eax
dec eax
je 0x300111ec
sub eax, 6
je 0x300111ec
push 0
push pe_nt_image_headers32
lea eax, [ebx + 0xf4]
push eax
call fcn.30067eb7
jmp 0x30011277
mov eax, dword [ebp - 0x58]
mov ecx, dword [eax + 0x8c]
dec ecx
push ecx
push eax
call fcn.3001c300
mov ecx, dword [eax + 0x38]
sub ecx, dword [eax + 0x30]
mov dword [ebp - 0x18], eax
mov eax, dword [ebx + 0x38]
sub eax, dword [esi]
cmp ecx, eax
je 0x3001121f
mov eax, dword [ebp - 0x58]
push 1
push 2
add eax, 0x10
push eax
call fcn.30067eb7
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebx + 0x3c]
mov edx, dword [eax + 0x3c]
sub ecx, dword [ebx + 0x34]
sub edx, dword [eax + 0x34]
cmp edx, ecx
je 0x30011251
mov eax, dword [ebp - 0x58]
push 1
push 2
add eax, 0x10
push eax
call fcn.30067eb7
mov ecx, dword [ebx + 0x3c]
mov eax, dword [ebp - 0x18]
mov dword [eax + 0x3c], ecx
mov ecx, dword [ebx + 0x34]
mov dword [eax + 0x34], ecx
mov eax, dword [ebp - 0x58]
test byte [eax + 0x10], 2
je 0x30011263
mov dword [ebp - 0x80], 1
jmp 0x3001126f
cmp dword [ebp - 0x80], 0
mov eax, dword [eax + 0x4c]
mov dword [ebp - 0x64], eax
je 0x30011277
push dword [ebp - 0x20]
call fcn.3003bbfd
push dword [ebp - 0x20]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push dword [ebp - 0x20]
call fcn.3004ee74
jmp 0x300112a2
cmp dword [ebx], 0xffffffff
jne 0x300112a2
push 0
push pe_nt_image_headers32
lea eax, [ebx + 0xf4]
push eax
call fcn.30067eb7
mov eax, dword [ebp - 0x64]
xor ecx, ecx
cmp dword [ebp - 0x6c], ecx
je 0x300112b4
cmp eax, dword [ebp - 0x1c]
jge 0x300112b4
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x4c], ecx
je 0x300112c6
cmp eax, dword [ebp - 0x7c]
mov dword [ebp - 0x4c], ecx
jle 0x300112db
mov dword [ebp - 0x7c], eax
jmp 0x300112db
cmp eax, dword [ebp - 0x9c]
jle 0x300112d4
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0x4c], 1
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, dword [ebp + 0x18]
jl 0x3001104e
jmp 0x300112f2
mov ebx, dword [ebp + 0x18]
mov esi, dword [ebp + 0x18]
cmp dword [ebp - 0xc8], 0
je 0x3001131a
cmp dword [ebp - 0xb8], 1
jle 0x30011315
mov eax, dword [edi + 0x80]
add eax, dword [ebp - 0x9c]
add eax, dword [ebp - 0x7c]
jmp 0x3001132e
mov eax, dword [ebp - 0x7c]
jmp 0x3001132e
mov eax, dword [ebp - 0x7c]
cmp dword [ebp - 0x9c], eax
mov dword [ebp - 0x50], eax
jle 0x30011331
mov eax, dword [ebp - 0x9c]
mov dword [ebp - 0x50], eax
cmp dword [ebp - 0x44], 0
je 0x30011346
cmp dword [ebp - 0x14], 1
jle 0x30011346
add eax, dword [edi + 0x84]
mov dword [ebp - 0x50], eax
mov eax, dword [ebp - 0x1c]
cdq
sub eax, edx
sar eax, 1
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x4c], 1
jmp 0x300126ef
mov eax, dword [edi + 0x34]
mov ecx, dword [ebp - 8]
xor edx, edx
cmp eax, 0x1a
mov dword [ebp - 0xb4], ecx
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x68], edx
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x60], edx
je 0x300113b5
cmp eax, 0x20
je 0x3001138b
xor eax, eax
cmp ecx, dword [ebp + 0x14]
jmp 0x300113e6
cmp ecx, edx
jne 0x300113b0
cmp dword [ebp - 0xac], edx
jne 0x300113b0
or dword [ebp - 0xb4], 0xffffffff
mov eax, dword [ebp + 0x18]
dec eax
mov dword [ebp - 8], eax
xor eax, eax
inc eax
mov dword [ebp - 0xac], eax
jmp 0x300113e9
mov dword [ebp - 0x2c], edx
jmp 0x300113ec
cmp ecx, dword [ebp - 0xcc]
jne 0x300113e2
cmp dword [ebp - 0xac], edx
jne 0x300113e2
mov eax, dword [ebp + 0x18]
dec ecx
dec eax
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0xb4], ecx
mov dword [ebp - 8], eax
mov dword [ebp - 0xac], 1
jmp 0x300113ec
xor eax, eax
cmp ecx, edx
sete al
mov dword [ebp - 0x2c], eax
push dword [ebp - 8]
push edi
call fcn.3001c300
mov ebx, eax
lea eax, [ebp - 0xf0]
push eax
push ebx
call fcn.30010d33
mov eax, dword [ebx + 0xf4]
mov esi, dword [ebp - 0xc]
add esi, dword [ebp - 0x54]
and dword [ebx + 0x14], 0
and dword [ebx + 0x18], 0
mov ecx, eax
and ecx, 4
and eax, 0x80
cmp dword [ebp - 0x2c], 0
mov dword [ebp - 0x8c], ecx
mov dword [ebp - 0x90], eax
mov dword [ebp - 0xc], esi
jne 0x3001143d
add esi, dword [ebx + 0x58]
mov dword [ebp - 0xc], esi
xor eax, eax
cmp dword [ebp - 0x6c], eax
mov dword [ebp - 0x48], eax
lea ecx, [ebx + 0x30]
je 0x300114f6
cmp dword [ebp - 0x90], eax
je 0x300114f6
mov eax, dword [edi + 0x2c]
cmp eax, 0xffffffff
je 0x300114e9
lea ecx, [ebp - 0x20]
push ecx
push eax
push 0x65
push dword [ebp + 0xc]
call fcn.3003a5eb
test eax, eax
mov dword [ebp - 0x30], eax
jne 0x30012c47
push dword [ebp - 0x20]
call dword [sym.imp.KERNEL32.dll_GlobalLock]
push dword [edi + 0x30]
push eax
call fcn.3001c300
mov esi, eax
push dword [esi + 0x3c]
lea eax, [ebx + 0x30]
push dword [esi + 0x38]
push dword [esi + 0x34]
push dword [esi + 0x30]
push eax
call dword [sym.imp.USER32.dll_SetRect]
push dword [esi + 0xf0]
lea eax, [ebx + 0xe4]
push dword [esi + 0xec]
push dword [esi + 0xe8]
push dword [esi + 0xe4]
push eax
call dword [sym.imp.USER32.dll_SetRect]
mov eax, dword [esi + 0x60]
mov dword [ebx + 0x60], eax
mov eax, dword [esi + 0x64]
mov dword [ebx + 0x64], eax
push dword [ebp - 0x20]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov esi, dword [ebp - 0xc]
jmp 0x300114f6
xor eax, eax
push eax
push eax
push eax
push eax
push ecx
call dword [sym.imp.USER32.dll_SetRect]
lea eax, [ebx + 0x30]
mov ecx, dword [eax + 8]
sub ecx, dword [eax]
test word [ebx + 0x2c], 0x800
mov dword [ebp - 0x94], ecx
je 0x30011514
mov ecx, dword [eax + 0xc]
sub ecx, dword [eax + 4]
jmp 0x30011549
cmp dword [ebp - 0x44], 0
je 0x30011543
mov ecx, dword [ebp - 8]
cmp ecx, dword [ebp - 0x14]
jne 0x30011543
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 0x64], ecx
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push eax
call dword [sym.imp.USER32.dll_SetRect]
sub esi, dword [edi + 0x7c]
mov ecx, dword [ebp - 0x64]
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x28], esi
jmp 0x3001154c
mov ecx, dword [ebx + 0xf0]
mov dword [ebp - 0x64], ecx
cmp dword [ebp - 0x4c], 0
jne 0x30011560
mov eax, dword [edi + 0x80]
add eax, dword [ebp - 0x7c]
add ecx, eax
mov dword [ebp - 0x64], ecx
push ebx
push edi
call fcn.3001c5e9
cmp eax, 0xffffffff
mov dword [ebp - 0xc0], eax
je 0x3001225a
push dword [ebp + 0x10]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
lea eax, [ebp - 0x20]
push eax
push dword [ebp - 0xc0]
push 0x65
push dword [ebp + 0xc]
call fcn.3003a5eb
test eax, eax
mov dword [ebp - 0x30], eax
jne 0x30012c53
xor esi, esi
inc esi
push esi
push dword [ebp - 0x20]
call fcn.3003baa3
push dword [ebp - 0x20]
call fcn.3003bbfd
push dword [ebp - 0x20]
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov ebx, eax
mov eax, dword [ebx + 0x34]
cmp eax, 0x13
je 0x300115f5
cmp eax, 0x1c
jne 0x30011618
mov eax, dword [ebx + 0x8c]
dec eax
push eax
push ebx
call fcn.3001c300
cmp dword [ebp - 0x90], 0
jne 0x30011618
mov ecx, dword [eax + 0xec]
sub ecx, dword [eax + 0xe4]
cmp ecx, dword [ebp - 0x94]
jmp 0x3001160a
cmp dword [ebp - 0x90], 0
jne 0x30011618
mov eax, dword [ebx + 0x24]
sub eax, dword [ebx + 0x1c]
cmp eax, dword [ebp - 0x94]
je 0x30011618
push esi
push 2
lea eax, [ebx + 0x10]
push eax
call fcn.30067eb7
mov ecx, dword [ebx + 0x34]
mov eax, ecx
sub eax, 0x18
je 0x3001162f
dec eax
dec eax
je 0x3001162f
sub eax, 6
jne 0x300116e9
cmp dword [ebp - 0x40], 0xffffffff
je 0x300116d6
cmp dword [ebp - 0x40], esi
je 0x30011678
cmp dword [ebp - 0x40], 2
jne 0x300116e9
cmp dword [ebp - 0x88], 0
push 0x20
pop edi
je 0x3001165f
mov eax, dword [ebp + 0x14]
cmp dword [ebp - 8], eax
jle 0x3001165f
push 0x18
pop edi
cmp ecx, edi
je 0x300116e9
push esi
push 2
lea eax, [ebx + 0x10]
push eax
call fcn.30067eb7
mov dword [ebx + 0x34], edi
jmp 0x300116e9
cmp dword [ebp - 0x88], 0
push 0x18
pop esi
je 0x300116c0
mov edi, dword [edi + 0x34]
sub edi, 3
je 0x300116aa
dec edi
dec edi
je 0x3001169a
sub edi, 3
je 0x3001169f
sub edi, 7
jne 0x300116c0
mov eax, dword [ebp + 0x14]
jmp 0x300116a3
mov eax, dword [ebp + 0x14]
inc eax
cmp dword [ebp - 8], eax
jle 0x300116c0
jmp 0x300116bd
mov eax, dword [ebp + 0x14]
lea edx, [eax + 1]
cmp dword [ebp - 8], edx
je 0x300116bd
add eax, 3
cmp dword [ebp - 8], eax
jne 0x300116c0
push 0x20
pop esi
cmp ecx, esi
je 0x300116e9
push 1
push 2
lea eax, [ebx + 0x10]
push eax
call fcn.30067eb7
mov dword [ebx + 0x34], esi
jmp 0x300116e9
push esi
push 2
lea eax, [ebx + 0x10]
push eax
call fcn.30067eb7
mov dword [ebx + 0x34], 0x19
movzx edi, byte [ebx + 0x10]
mov esi, dword [ebx + 0x34]
push dword [ebp - 0x20]
shr edi, 1
xor eax, eax
and edi, 1
cmp dword [ebx + 0x68], 3
mov dword [ebp - 0x3c], edi
sete al
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x54], eax
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
cmp dword [ebp + 0x20], 0
je 0x3001171c
xor edi, edi
inc edi
mov dword [ebp - 0x3c], edi
test edi, edi
je 0x30011744
push dword [ebp + 0x28]
push dword [ebp + 0x20]
push dword [ebp + 0x24]
push dword [ebp - 0x20]
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [esi*4 + 0x30097c80]
test eax, eax
mov dword [ebp - 0x30], eax
jne 0x3001270d
push dword [ebp + 0x10]
mov esi, dword [sym.imp.KERNEL32.dll_GlobalLock]
call esi
push dword [ebp - 8]
mov edi, eax
push edi
call fcn.3001c300
push dword [ebp - 0x20]
mov ebx, eax
call esi
xor edx, edx
cmp dword [ebp - 0x54], edx
mov esi, eax
je 0x300117a3
cmp dword [ebp - 0xa8], edx
jne 0x300117a3
cmp dword [ebp - 0x3c], edx
jne 0x300117a3
mov eax, dword [esi + 0xa4]
lea eax, [eax + esi + 8]
mov ecx, dword [eax + 4]
mov eax, dword [esi + 0x50]
add eax, ecx
cdq
sub eax, edx
sar eax, 1
sub eax, ecx
mov ecx, dword [esi + 0xa0]
add ecx, esi
mov dword [esi + 0x14], eax
mov dword [ecx + 4], eax
mov dword [ecx + 0xc], eax
xor edx, edx
mov eax, dword [edi + 0xa0]
add eax, edi
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x18]
cmp eax, 0x10
lea ecx, [ebx + 0x30]
jg 0x30011921
je 0x30011ae5
sub eax, 4
je 0x300117e1
dec eax
dec eax
je 0x300117e1
sub eax, 3
je 0x30011ae5
sub eax, 3
je 0x30011842
dec eax
jne 0x30011948
xor eax, eax
inc eax
cmp dword [ebp - 0x8c], edx
mov dword [ebp - 0xc4], eax
mov dword [ebp - 0xf8], eax
jne 0x300118d8
mov eax, dword [ebx + 0x38]
sub eax, dword [ebx + 0x30]
push ebx
cdq
and edx, 7
add eax, edx
sar eax, 3
push edi
mov dword [ebp - 4], eax
call fcn.30015b43
test eax, eax
je 0x300118c0
fld qword [ebx + 0x124]
push ecx
push ecx
lea eax, [ebx + 0x30]
fstp qword [esp]
push eax
call fcn.3001687a
cmp eax, dword [ebp - 4]
jle 0x300118c0
add eax, 3
jmp 0x300118c3
cmp dword [ebp - 0x44], edx
je 0x30011856
mov eax, dword [ebp - 0x28]
cdq
sub eax, edx
sar eax, 1
mov edx, eax
mov dword [ebp - 0x28], edx
jmp 0x3001188d
test word [ebx + 0x2c], 0x2800
jne 0x30011871
mov eax, dword [ebx + 0x80]
sub eax, dword [ebx + 0x88]
sub eax, dword [ecx]
add eax, dword [ecx + 8]
jmp 0x30011876
mov eax, dword [ecx + 8]
sub eax, dword [ecx]
cdq
sub eax, edx
sar eax, 1
mov dword [ebx + 0x60], eax
mov eax, dword [ecx + 8]
sub eax, dword [ecx]
jne 0x3001188a
mov edx, dword [esi + 0x14]
jmp 0x3001188d
mov edx, dword [ebx + 0x60]
mov eax, dword [esi + 0xa0]
add eax, esi
mov dword [esi + 0x14], edx
mov dword [eax + 4], edx
mov dword [eax + 0xc], edx
mov ecx, dword [esi + 0x98]
test ecx, ecx
jle 0x300118af
imul ecx, ecx, 0x14
mov dword [ecx + eax - 8], edx
cmp edx, dword [esi + 0x24]
jle 0x30011ba5
mov dword [esi + 0x24], edx
jmp 0x30011ba5
mov eax, dword [ebp - 4]
test word [ebx + 0x2c], 0x2800
jne 0x300118db
mov ecx, dword [ebx + 0x80]
add ecx, eax
mov dword [ebx + 0x60], ecx
jmp 0x300118de
mov eax, dword [ebx + 0x64]
mov dword [ebx + 0x60], eax
cmp dword [ebp - 0x44], 0
je 0x30011ba5
cmp dword [ebp - 0x14], 1
jle 0x3001190d
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
imul edx, edx, 0x14
mov ecx, dword [eax + 0x18]
mov eax, dword [edx + eax + 4]
sub eax, ecx
cdq
and edx, 7
add eax, edx
sar eax, 3
add eax, ecx
jmp 0x30011919
mov eax, dword [ebp - 0x28]
cdq
and edx, 7
add eax, edx
sar eax, 3
mov dword [ebp - 0x28], eax
jmp 0x30011ba5
sub eax, 0x12
je 0x30011ae5
sub eax, 4
je 0x30011a60
dec eax
dec eax
je 0x30011a21
dec eax
dec eax
je 0x300119c5
sub eax, 6
je 0x30011990
mov eax, dword [ecx + 8]
sub eax, dword [ecx]
cdq
sub eax, edx
sar eax, 1
test word [ebx + 0x2c], 0x2800
mov dword [ebx + 0x60], eax
jne 0x3001197c
cmp dword [ebx + 0x10], 0
jl 0x3001197c
mov eax, dword [ebx + 0x80]
sub eax, dword [ebx + 0x88]
sub eax, dword [ecx]
add eax, dword [ecx + 8]
cdq
sub eax, edx
sar eax, 1
mov dword [ebx + 0x60], eax
cmp dword [ebp - 0x44], 0
je 0x30011ba5
mov eax, dword [ebp - 0x28]
cdq
sub eax, edx
sar eax, 1
jmp 0x30011919
mov eax, dword [esi + 0x8c]
dec eax
dec eax
push eax
push esi
call fcn.3001c300
mov eax, dword [eax + 0x38]
mov dword [ebp - 0x48], eax
mov eax, dword [esi + 0x8c]
dec eax
push eax
push esi
call fcn.3001c300
mov ecx, dword [eax + 0x38]
sub dword [ebp - 0x48], ecx
mov dword [ebp - 0x60], 1
jmp 0x30011a4b
mov ecx, dword [esi + 0x8c]
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
test eax, eax
jle 0x300119e8
mov edx, eax
imul edx, edx, 0x14
add edx, dword [esi + 0xa0]
mov edx, dword [edx + esi - 8]
mov dword [ebp - 0x34], edx
mov edx, dword [ebp - 0x34]
add dword [ebp - 0xc], edx
lea edx, [ecx - 1]
cmp eax, edx
jge 0x30011a19
add ecx, 0xfffffffe
push ecx
push esi
call fcn.3001c300
mov eax, dword [eax + 0x38]
mov dword [ebp - 0x48], eax
mov eax, dword [esi + 0x8c]
dec eax
push eax
push esi
call fcn.3001c300
mov eax, dword [eax + 0x38]
sub dword [ebp - 0x48], eax
mov eax, dword [esi + 0x8c]
jmp 0x30011a3c
mov eax, dword [esi + 0x8c]
mov ecx, eax
imul ecx, ecx, 0x14
add ecx, dword [esi + 0xa0]
mov ecx, dword [ecx + esi - 0x1c]
add dword [ebp - 0xc], ecx
mov dword [ebp - 0x34], ecx
dec eax
push eax
push esi
mov dword [ebp - 0x60], 1
call fcn.3001c300
cmp dword [ebp - 0x80], 0
jne 0x30011ba5
mov eax, dword [eax + 0x60]
mov dword [ebx + 0x60], eax
jmp 0x30011ba5
cmp dword [ebp - 0x44], edx
je 0x30011a78
mov eax, dword [ebp - 0x28]
cdq
sub eax, edx
sar eax, 1
mov dword [ebp - 0x28], eax
mov eax, dword [esi + 0x58]
sub eax, dword [ebp - 0x28]
jmp 0x30011ab2
test word [ebx + 0x2c], 0x2800
jne 0x30011a93
mov eax, dword [ebx + 0x80]
sub eax, dword [ebx + 0x88]
sub eax, dword [ecx]
add eax, dword [ecx + 8]
jmp 0x30011a98
mov eax, dword [ecx + 8]
sub eax, dword [ecx]
cdq
sub eax, edx
sar eax, 1
mov dword [ebx + 0x60], eax
mov eax, dword [ecx + 8]
sub eax, dword [ecx]
jne 0x30011aac
mov eax, dword [esi + 0x14]
jmp 0x30011ab2
mov eax, dword [esi + 0x58]
sub eax, dword [ebx + 0x60]
mov edx, dword [esi + 0xa0]
add edx, esi
mov dword [esi + 0x14], eax
mov dword [edx + 4], eax
mov dword [edx + 0xc], eax
mov ecx, dword [esi + 0x98]
test ecx, ecx
jle 0x30011ad4
imul ecx, ecx, 0x14
mov dword [ecx + edx - 0x10], eax
cmp eax, dword [esi + 0x1c]
jge 0x30011ba5
mov dword [esi + 0x1c], eax
jmp 0x30011ba5
cmp dword [ebp - 0x8c], edx
mov dword [ebp - 0xc4], 1
mov dword [ebp - 0xf8], edx
jne 0x30011b60
mov eax, dword [ebx + 0x38]
sub eax, dword [ebx + 0x30]
push ebx
cdq
and edx, 7
add eax, edx
sar eax, 3
push edi
mov dword [ebp - 4], eax
call fcn.30015b43
test eax, eax
je 0x30011b39
fld qword [ebx + 0x124]
push ecx
push ecx
lea eax, [ebx + 0x30]
fstp qword [esp]
push eax
call fcn.3001687a
cmp eax, dword [ebp - 4]
jge 0x30011b39
add eax, 3
mov dword [ebp - 4], eax
test word [ebx + 0x2c], 0x2800
mov eax, dword [ebx + 0x38]
jne 0x30011b52
sub eax, dword [ebx + 0x88]
sub eax, dword [ebp - 4]
sub eax, dword [ebx + 0x30]
jmp 0x30011b63
sub eax, dword [ebx + 0x30]
cdq
and edx, 7
add eax, edx
sar eax, 3
jmp 0x30011b63
mov eax, dword [ebx + 0x64]
cmp dword [ebp - 0x44], 0
mov dword [ebx + 0x60], eax
je 0x30011ba5
cmp dword [ebp - 0x14], 1
jle 0x30011b94
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
imul eax, eax, 0x14
mov ecx, dword [eax + edx + 4]
mov eax, ecx
sub eax, dword [edx + 0x18]
cdq
and edx, 7
add eax, edx
sar eax, 3
sub ecx, eax
mov dword [ebp - 0x28], ecx
jmp 0x30011ba5
mov eax, dword [ebp - 0x28]
cdq
and edx, 7
add eax, edx
sar eax, 3
neg eax
add dword [ebp - 0x28], eax
xor edx, edx
cmp dword [ebp - 0x54], edx
je 0x30011bcc
cmp dword [ebp - 0xa8], edx
jne 0x30011bcf
mov eax, dword [esi + 0x58]
sub eax, dword [esi + 0x14]
mov dword [ebx + 0x1c], eax
mov eax, dword [esi + 0x5c]
sub eax, dword [esi + 0x14]
mov dword [ebx + 0x20], eax
mov eax, dword [esi + 0x14]
mov dword [ebx + 0x24], eax
mov dword [ebx + 0x28], edx
cmp dword [ebp - 0x4c], edx
jne 0x30011bfc
mov ecx, dword [ebx + 0x64]
mov eax, dword [ebp - 0x34]
add ecx, eax
sub dword [ebp - 0xc], ecx
mov ecx, dword [ebp + 0x14]
inc ecx
xor edx, edx
cmp dword [ebp - 8], ecx
jg 0x30011bef
cmp dword [ebp - 0x24], edx
je 0x30011bfc
mov ecx, dword [ebp - 0x24]
add eax, ecx
cmp dword [ebp - 0xc], eax
jge 0x30011bfc
mov dword [ebp - 0xc], eax
test word [ebx + 0x2c], 0x1000
je 0x30011cf0
cmp dword [ebp - 0x3c], edx
je 0x30011cd2
cmp dword [ebp - 0x90], edx
jne 0x30011cd2
mov eax, dword [esi + 0x24]
sub eax, dword [esi + 0x1c]
cmp dword [esi + 0x34], 0x1c
mov dword [ebp - 4], eax
jne 0x30011c6a
mov eax, dword [esi + 0x8c]
dec eax
push eax
push esi
call fcn.3001c300
mov ecx, dword [eax + 0xec]
sub ecx, dword [eax + 0xe4]
lea eax, [ebp - 0xe0]
push eax
push ebx
mov dword [ebp - 4], ecx
call fcn.3001c4d4
mov eax, dword [ebp - 0xe0]
mov ecx, dword [ebp - 0xd8]
add ecx, eax
add dword [ebp - 4], ecx
mov eax, dword [ebp - 4]
mov ecx, dword [ebx + 0x38]
sub ecx, dword [ebx + 0x30]
cmp eax, ecx
je 0x30011c9d
cmp dword [0x30075954], 0
jne 0x30011c9d
xor eax, eax
inc eax
push eax
mov dword [ebp - 0xf4], eax
push 2
lea eax, [ebx + 0x2c]
push eax
call fcn.30067eb7
mov eax, dword [ebp - 4]
mov dword [ebx + 0xfc], eax
jmp 0x30011ca4
and dword [ebx + 0xfc], 0
mov ecx, dword [esi + 0x34]
xor eax, eax
cmp ecx, 0x13
jne 0x30011cb3
mov eax, dword [esi + 0x28]
jmp 0x30011cc9
cmp ecx, 0x1c
jne 0x30011ccc
mov eax, dword [esi + 0x8c]
dec eax
push eax
push esi
call fcn.3001c300
mov eax, dword [eax + 0x3c]
sub eax, dword [esi + 0x20]
mov dword [ebx + 0xf8], eax
mov eax, dword [ebp - 0x50]
mov ecx, dword [ebp + 0x1c]
add ecx, eax
mov dword [esi + 0x54], ecx
mov ecx, dword [ebx + 0xf8]
add ecx, eax
mov dword [ebx + 0x100], ecx
jmp 0x30011f54
mov dword [ebx + 0x100], edx
mov dword [ebx + 0xf8], edx
mov dword [ebx + 0xfc], edx
cmp dword [esi + 0x98], edx
je 0x30011e30
cmp dword [ebp - 0x60], edx
jne 0x30011e3b
mov eax, dword [ebp - 0x64]
sub eax, dword [esi + 0x84]
mov ecx, dword [esi + 0xa0]
sub eax, dword [esi + 0x78]
add ecx, esi
sub eax, dword [esi + 0x70]
mov dword [ebp - 0x10], ecx
sub eax, dword [ebp - 0xe4]
sub eax, dword [ebp - 0x50]
mov dword [ecx], eax
test byte [edi + 0x10], 0x20
jne 0x30011d54
push 1
mov eax, ecx
push 1
add eax, 0x10
push eax
call fcn.30067eb7
mov ecx, dword [ebp - 0x10]
cmp dword [ebp - 0xc4], 0
je 0x30011d8b
cmp dword [ebx + 0xf0], 0
je 0x30011d8b
push dword [ebp - 0xf8]
mov eax, ebx
call fcn.30010caa
test eax, eax
jne 0x30011d88
mov ecx, dword [ebx + 0x3c]
sub ecx, dword [ebx + 0x34]
mov eax, dword [ebp - 0x10]
sub ecx, dword [ebx + 0xf0]
add dword [eax], ecx
mov ecx, dword [ebp - 0x10]
cmp dword [ebp - 0x8c], 0
je case.0x30011db9.4
mov eax, dword [ebp - 8]
inc eax
cmp dword [edi + 0x9c], eax
jl 0x30011da7
and dword [ebp - 0xb8], 0
mov eax, dword [edi + 0x34]
add eax, 0xfffffffd
cmp eax, 0x1d
ja case.0x30011db9.4
movzx eax, byte [eax + 0x30012cae]
jmp dword [eax*4 + 0x30012ca2]
mov eax, dword [ebx + 0x3c]
sub eax, dword [ebx + 0x34]
cdq
sub eax, edx
mov edx, dword [ebp - 0xb8]
sar eax, 1
neg edx
sub edx, eax
add dword [ecx], edx
jmp case.0x30011db9.4
mov eax, dword [ebx + 0x68]
sub eax, dword [ebx + 0x3c]
add eax, dword [ebx + 0x34]
sub eax, dword [ebp - 0xb8]
add dword [ecx], eax
mov eax, dword [ecx]
mov ecx, dword [ebp - 0x50]
mov dword [esi + 0x20], eax
mov eax, dword [ebp + 0x1c]
add ecx, eax
cmp dword [ebp - 0x54], 0
mov dword [esi + 0x54], ecx
je 0x30011f54
cmp dword [ebp - 0xa8], 0
je 0x30011f61
mov eax, dword [ebx + 0x28]
test eax, eax
je 0x30011f54
add dword [esi + 0x14], eax
mov ecx, dword [esi + 0x14]
mov eax, dword [ebp - 0x10]
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x14]
mov dword [eax + 0xc], ecx
xor edx, edx
cmp dword [ebp - 0x60], edx
je 0x30011f54
xor edx, edx
cmp dword [ebp - 0x4c], edx
mov ecx, dword [ebp + 0x1c]
mov dword [esi + 0x54], ecx
jne 0x30011e54
mov eax, dword [edi + 0x80]
add eax, dword [ebp - 0x7c]
add eax, ecx
mov dword [esi + 0x54], eax
mov eax, dword [esi + 0x64]
mov dword [ebp - 0x68], eax
mov eax, dword [esi + 0x60]
mov dword [ebp - 0x58], eax
mov eax, dword [ebp - 0x50]
sub eax, dword [esi + 0x54]
add eax, ecx
cmp dword [ebp - 0x80], edx
mov dword [ebp - 4], eax
jne 0x30011f54
and dword [ebp - 0x10], 0
cmp dword [esi + 0x8c], 0
mov dword [esi + 0x28], eax
jle 0x30011f54
push dword [ebp - 0x10]
push esi
call fcn.3001c300
push eax
push esi
mov dword [ebp - 0x18], eax
call fcn.3001c5e9
cmp eax, 0xffffffff
je 0x30011f42
lea ecx, [ebp - 0x70]
push ecx
push eax
push 0x65
push dword [ebp + 0xc]
call fcn.3003a5eb
test eax, eax
mov dword [ebp - 0x30], eax
jne 0x30011f42
push dword [ebp - 0x70]
call fcn.3003bbfd
push dword [ebp - 0x70]
call dword [sym.imp.KERNEL32.dll_GlobalLock]
mov ecx, dword [ebp - 4]
mov dword [eax + 0x54], ecx
mov ecx, dword [eax + 0x84]
add ecx, dword [eax + 0x78]
add ecx, dword [eax + 0x70]
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 0x18]
mov edx, dword [ecx + 0xf0]
add edx, dword [ecx + 0x34]
mov ecx, dword [ebp - 0x3c]
sub edx, dword [ebp - 4]
sub edx, dword [ebp - 0x3c]
mov dword [eax + 0x20], edx
mov edx, dword [eax + 0x28]
add edx, dword [ebp - 4]
add ecx, edx
cmp ecx, dword [esi + 0x28]
jle 0x30011f0c
mov dword [esi + 0x28], ecx
mov ecx, dword [eax + 0x34]
cmp ecx, 0x13
je 0x30011f31
cmp ecx, 0x1c
je 0x30011f31
mov ecx, dword [ebp - 0x18]
test byte [ecx + 0xf4], 4
jne 0x30011f31
mov ecx, dword [eax + 0xa0]
mov edx, dword [eax + 0x20]
mov dword [eax + ecx], edx
push dword [ebp - 0x70]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
push dword [ebp - 0x70]
call fcn.3004ee74
inc dword [ebp - 0x10]
mov eax, dword [ebp - 0x10]
cmp eax, dword [esi + 0x8c]
jl 0x30011e88
cmp dword [ebp - 0xa8], 0
je 0x30011f61
and dword [ebp - 0x54], 0
cmp dword [ebp - 0x54], 0
je 0x30011f88
cmp dword [ebp - 0x38], 1
je 0x30011f7a
jle 0x30011f80
cmp dword [ebp - 0x38], 3
jg 0x30011f80
mov eax, dword [ebx + 0x20]
jmp 0x30011f7d
mov eax, dword [ebx + 0x1c]
mov dword [ebx + 0x28], eax
mov ecx, dword [ebx + 0x28]
add ecx, dword [ebx + 0x24]
jmp 0x30011f8b
mov ecx, dword [esi + 0x14]
mov edx, dword [ebx + 0x60]
mov eax, dword [esi + 0x24]
sub ecx, edx
sub eax, ecx
mov dword [ebx + 0x14], eax
mov eax, ecx
sub eax, dword [esi + 0x1c]
cmp dword [ebp - 0x60], 0
mov dword [ebp - 0x18], ecx
mov dword [ebx + 0x18], eax
je 0x30011faf
sub eax, dword [ebp - 0x34]
mov dword [ebx + 0x18], eax
xor eax, eax
cmp dword [ebp - 0x98], eax
jle 0x30012168
push dword [ebp - 0x18]
mov eax, dword [esi + 0xa4]
push dword [esi + 0x94]
add eax, esi
push eax
mov eax, dword [edi + 0xa4]
push dword [edi + 0x94]
add eax, edi
push eax
call fcn.3001b16b
add eax, dword [0x30075998]
cmp dword [ebp - 0x2c], 0
mov dword [ebp - 0x10], eax
jne 0x30011ff8
mov eax, dword [ebx + 0x58]
add dword [ebp - 0x10], eax
mov ecx, dword [ebp - 0xc]
xor eax, eax
cmp ecx, dword [ebp - 0x10]
mov dword [ebp - 4], eax
jge 0x30012076
cmp dword [ebp - 0x54], eax
je 0x30012032
mov edx, dword [ebx + 0x28]
mov eax, dword [ebp - 0x10]
sub eax, ecx
mov ecx, dword [ebx + 0x1c]
mov dword [ebp - 0x2c], edx
sub edx, eax
cmp edx, ecx
mov dword [ebp - 4], eax
mov dword [ebx + 0x28], edx
jge 0x3001202f
mov eax, dword [ebp - 0x2c]
sub eax, ecx
mov dword [ebx + 0x28], ecx
mov dword [ebp - 4], eax
sub dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x10]
sub eax, dword [ebp - 0xc]
test eax, eax
mov dword [ebp - 0x3c], eax
jle 0x3001206b
cmp dword [ebp - 0x84], 0
jl 0x3001206b
push dword [ebp - 0x84]
push edi
call fcn.3001c300
mov ecx, dword [eax + 0x28]
test ecx, ecx
jge 0x3001206b
mov edx, dword [ebp - 0x3c]
add ecx, edx
test ecx, ecx
mov dword [eax + 0x28], ecx
jle 0x3001206b
and dword [eax + 0x28], 0
mov eax, dword [ebp - 0x10]
neg dword [ebp - 4]
mov dword [ebp - 0xc], eax
jmp 0x300120de
jle 0x300120de
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0x78]
cmp dword [ebp - 0x84], eax
jne 0x300120de
push dword [ebp - 0x84]
push edi
call fcn.3001c300
mov edx, dword [ebp - 0xc]
sub edx, dword [ebp - 0x10]
cmp dword [ebp - 0x98], 1
mov ecx, dword [eax + 0x28]
mov dword [ebp - 4], edx
mov dword [ebp - 0x2c], ecx
jne 0x300120c0
cmp ecx, dword [eax + 0x1c]
jle 0x300120d2
sub ecx, edx
mov edx, dword [eax + 0x1c]
cmp ecx, edx
mov dword [eax + 0x28], ecx
jge 0x300120cf
mov dword [eax + 0x28], edx
jmp 0x300120cf
test ecx, ecx
jle 0x300120d2
sub ecx, edx
mov dword [eax + 0x28], ecx
jns 0x300120cf
and dword [eax + 0x28], 0
mov ecx, dword [ebp - 0x2c]
sub ecx, dword [eax + 0x28]
add dword [eax + 0x14], ecx
sub dword [eax + 0x18], ecx
mov dword [ebp - 4], ecx
cmp dword [ebp - 0x4c], 0
je 0x30012136
cmp dword [ebp - 0x60], 0
je 0x30012102
mov ecx, dword [ebp - 0x58]
test ecx, ecx
je 0x30012136
mov eax, dword [ebp - 0x24]
mov edx, dword [ebp - 0xc]
sub eax, dword [edi + 0x7c]
add edx, ecx
cmp edx, eax
jge 0x30012136
jmp 0x30012131
test word [ebx + 0x2c], 0x1000
je 0x30012117
mov eax, dword [ebp - 0x24]
sub eax, dword [edi + 0x7c]
cmp dword [ebp - 0xc], eax
jge 0x30012136
jmp 0x30012133
mov edx, dword [ebp - 0xc]
mov eax, dword [ebx + 0x60]
mov ecx, dword [edi + 0x7c]
add eax, edx
mov edx, dword [ebp - 0x24]
sub edx, ecx
cmp eax, edx
jge 0x30012136
mov eax, dword [ebp - 0x24]
sub eax, dword [ebx + 0x60]
sub eax, ecx
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0xc]
sub eax, dword [ebp - 0x18]
sub eax, dword [ebp - 4]
push eax
push dword [esi + 0x94]
mov eax, dword [esi + 0xa4]
add eax, esi
push eax
mov eax, dword [edi + 0xa4]
push dword [edi + 0x94]
add eax, edi
push eax
call fcn.3001b210
jmp 0x300121fd
cmp dword [ebp - 0x4c], eax
je 0x300121ca
cmp dword [ebp - 0x60], eax
je 0x30012193
mov edx, dword [ebp - 0x58]
cmp edx, eax
je 0x300121ca
mov eax, dword [ebp - 0x24]
sub eax, dword [edi + 0x7c]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp - 0xc]
add edx, eax
mov eax, dword [ebp - 0x2c]
cmp edx, eax
jge 0x300121ca
sub eax, dword [ebp - 0x58]
jmp 0x300121a6
test word [ebx + 0x2c], 0x1000
je 0x300121ab
mov eax, dword [ebp - 0x24]
sub eax, dword [edi + 0x7c]
cmp dword [ebp - 0xc], eax
jge 0x300121ca
mov dword [ebp - 0xc], eax
jmp 0x300121ca
mov ecx, dword [ebp - 0xc]
mov eax, dword [edi + 0x7c]
add edx, ecx
mov ecx, dword [ebp - 0x24]
sub ecx, eax
cmp edx, ecx
jge 0x300121c7
mov ecx, dword [ebp - 0x24]
sub ecx, dword [ebx + 0x60]
sub ecx, eax
mov dword [ebp - 0xc], ecx
mov ecx, dword [ebp - 0x18]
cmp dword [ebp - 0x44], 0
mov eax, dword [ebp - 0x28]
jne 0x300121d6
mov eax, dword [ebp - 0xc]
sub eax, ecx
push eax
mov eax, dword [esi + 0xa4]
push esi
push dword [esi + 0x94]
add eax, esi
push eax
mov eax, dword [edi + 0xa4]
push dword [edi + 0x94]
add eax, edi
push eax
call fcn.3001b986
push dword [ebp - 0x20]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
xor esi, esi
push esi
push dword [ebp - 0x20]
call fcn.3003baa3
push dword [ebp - 0x20]
call fcn.3004ee74
cmp dword [ebp - 0x60], esi
je 0x30012223
cmp dword [ebp - 0x58], esi
je 0x30012298
inc dword [ebp - 0x98]
cmp dword [ebp - 0x54], esi
mov eax, dword [ebp - 8]
mov dword [ebp - 0x78], eax
je 0x3001224b
cmp dword [ebx + 0x28], esi
mov dword [ebp - 0x84], eax
je 0x30012298
mov dword [ebp - 0xfc], 1
jmp 0x30012298
or dword [ebp - 0x84], 0xffffffff
mov dword [ebp - 0xbc], esi
jmp 0x30012298
xor ecx, ecx
cmp dword [ebp - 0x4c], ecx
jne 0x3001227f
sub esi, dword [ebx + 0x64]
mov eax, dword [ebp + 0x14]
inc eax
cmp dword [ebp - 8], eax
mov dword [ebp - 0xc], esi
jg 0x30012275
cmp dword [ebp - 0x24], ecx
je 0x3001227f
mov eax, dword [ebp - 0x24]
cmp esi, eax
jge 0x3001227f
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0x2c], ecx
je 0x30012298
mov eax, dword [edi + 0xa4]
push dword [edi + 0x94]
add eax, edi
push eax
call fcn.3001b958
cmp dword [ebp - 0x4c], 0
mov eax, dword [ebp - 0xc]
mov dword [ebp - 0x10], eax
lea esi, [ebx + 0x30]
je 0x30012333
cmp dword [ebp - 0x44], 0
je 0x300122c1
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x14]
jne 0x300122c1
push dword [ebp - 0x50]
push dword [ebp - 0x28]
jmp 0x300122cd
mov eax, dword [esi + 4]
neg eax
push eax
mov eax, dword [ebp - 0xc]
sub eax, dword [esi]
push eax
push esi
call dword [sym.imp.USER32.dll_OffsetRect]
mov eax, dword [esi + 8]
sub eax, dword [esi]
mov ecx, dword [edi + 0x7c]
add eax, ecx
add eax, dword [ebp - 0x48]
mov dword [ebp - 0x54], eax
xor eax, eax
cmp dword [ebp - 0xc8], eax
je 0x3001238c
cmp dword [ebp - 0x60], eax
mov dword [ebp - 0x4c], eax
je 0x30012310
cmp dword [ebp - 0x68], eax
je 0x3001238c
mov eax, dword [ebx + 0x30]
sub eax, dword [ebp - 0x34]
add eax, ecx
add eax, dword [ebp - 0x68]
jmp 0x3001232e
cmp dword [ebp - 0xc0], 0xffffffff
je 0x3001238c
test word [ebx + 0x2c], 0x1000
je 0x30012326
mov eax, dword [ebx + 0x38]
jmp 0x3001232c
mov eax, dword [ebx + 0x60]
add eax, dword [ebx + 0x30]
add eax, ecx
mov dword [ebp - 0x24], eax
jmp 0x3001238c
mov eax, dword [edi + 0x80]
sub eax, dword [esi + 4]
add eax, dword [ebp - 0x7c]
push eax
mov eax, dword [ebp - 0xc]
sub eax, dword [esi]
push eax
push esi
call dword [sym.imp.USER32.dll_OffsetRect]
mov eax, dword [edi + 0x7c]
mov ecx, dword [ebx + 0x64]
add ecx, eax
mov dword [ebp - 0x54], ecx
mov ecx, dword [ebx + 0x38]
lea eax, [ecx + eax*2]
add eax, dword [ebp - 0x48]
mov dword [ebp - 0x4c], 1
mov dword [ebp - 0x24], eax
mov eax, dword [ebx + 0x30]
sub eax, dword [ebp - 0x34]
cmp eax, dword [ebp - 0x5c]
jge 0x30012379
mov dword [ebp - 0x5c], eax
mov eax, dword [ebp - 0x48]
add eax, ecx
cmp eax, dword [ebp - 0xd0]
jle 0x3001238c
mov dword [ebp - 0xd0], eax
test word [ebx + 0x2c], 0x1000
je 0x300123a3
mov eax, dword [ebx + 0xf0]
add eax, dword [ebx + 0x34]
sub dword [ebx + 0x100], eax
xor edx, edx
cmp dword [ebp - 0x6c], edx
je 0x30012605
cmp dword [ebp - 0xc0], 0xffffffff
je 0x300123d3
mov eax, dword [ebx + 0x60]
mov ecx, dword [edi + 0x60]
add eax, dword [ebx + 0x30]
cmp ecx, edx
je 0x300123c8
cmp eax, ecx
jge 0x300123cb
mov dword [edi + 0x60], eax
cmp dword [edi + 0x64], eax
jge 0x300123d3
mov dword [edi + 0x64], eax
mov eax, dword [edi + 0x34]
cmp eax, 0x1a
mov ecx, dword [ebp - 0xb4]
mov dword [ebp - 4], ecx
jne 0x3001246d
cmp dword [ebp - 0x90], edx
je 0x30012460
inc ecx
mov dword [ebp - 4], ecx
cmp dword [ebp - 4], 0
jle 0x300126d7
mov eax, dword [ebp - 4]
dec eax
push eax
push edi
mov dword [ebp - 0x68], eax
call fcn.3001c300
lea ecx, [ebp - 0xe0]
push ecx
push eax
mov dword [ebp - 0x18], eax
call fcn.30010d33
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0xf4]
and eax, 4
je 0x300125b1
cmp dword [ebp - 4], 1
jle 0x300125b1
mov eax, dword [esi]
add eax, dword [ebp - 0xf0]
push 3
push 0
push eax
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0x30]
add eax, dword [ebp - 0xe0]
push eax
push dword [ebp - 0x1c]
push dword [ebp - 0x1c]
push dword [ebp - 0x68]
jmp 0x300126d1
mov ecx, dword [ebp - 8]
cmp ecx, dword [ebp - 0xcc]
jl 0x300123f4
jmp 0x30012487
cmp eax, 0x18
je 0x300123f4
cmp eax, 0x20
jne 0x300126d7
cmp dword [ebp - 0x90], edx
jne 0x300126d7
mov ecx, dword [ebp - 8]
test ecx, ecx
jne 0x30012518
mov eax, dword [edi + 0x8c]
dec eax
push eax
push edi
call fcn.3001c300
lea ecx, [ebp - 0xe0]
push ecx
push eax
mov dword [ebp - 0x18], eax
call fcn.30010d33
cmp dword [ebp - 0x8c], 0
je 0x30012514
mov eax, dword [edi + 0x8c]
sub eax, dword [edi + 0x90]
dec eax
test eax, eax
jle 0x300124f2
mov eax, dword [esi + 8]
sub eax, dword [ebp - 0xe8]
push 3
push 0
push eax
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0x38]
sub eax, dword [ebp - 0xd8]
push eax
push dword [ebp - 0x1c]
push dword [ebp - 0x1c]
push 0
jmp 0x300126d1
push ebx
push edi
call fcn.3001c5e9
cmp eax, 0xffffffff
je 0x30012514
mov ecx, dword [esi]
mov eax, dword [esi + 8]
sub eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
add eax, dword [ebp - 0xf0]
jmp 0x300124d3
mov eax, dword [esi]
jmp 0x3001250c
cmp eax, 0x1a
jne 0x3001252a
cmp ecx, dword [ebp - 0xcc]
jne 0x3001252a
push dword [ebp - 0x14]
jmp 0x3001252f
mov eax, dword [ebp - 8]
dec eax
push eax
push edi
call fcn.3001c300
mov dword [ebp - 0x18], eax
lea eax, [ebp - 0xe0]
push eax
push dword [ebp - 0x18]
call fcn.30010d33
cmp dword [ebp - 0x8c], 0
je 0x300125ad
mov eax, dword [edi + 0x8c]
sub eax, dword [edi + 0x90]
dec eax
cmp dword [ebp - 8], eax
jge 0x3001258b
mov eax, dword [esi + 8]
sub eax, dword [ebp - 0xe8]
push 3
push 0
push eax
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0x38]
sub eax, dword [ebp - 0xd8]
push eax
push dword [ebp - 0x1c]
push dword [ebp - 0x1c]
push dword [ebp - 8]
jmp 0x300126d1
push ebx
push edi
call fcn.3001c5e9
cmp eax, 0xffffffff
je 0x300125ad
mov ecx, dword [esi]
mov eax, dword [esi + 8]
sub eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
add eax, dword [ebp - 0xf0]
jmp 0x3001256b
mov eax, dword [esi]
jmp 0x300125a5
test eax, eax
je 0x300125e7
push dword [ebp - 0x18]
push edi
call fcn.3001c5e9
cmp eax, 0xffffffff
je 0x300125e7
mov eax, dword [ebp - 0x18]
mov ecx, dword [eax + 0x30]
mov eax, dword [eax + 0x38]
mov edx, dword [esi]
add edx, dword [ebp - 0xf0]
push 3
sub eax, ecx
push 0
push edx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
jmp 0x3001244b
mov eax, dword [esi]
add eax, dword [ebp - 0xf0]
push 3
push 0
push eax
mov eax, dword [ebp - 0x18]
mov eax, dword [eax + 0x38]
sub eax, dword [ebp - 0xd8]
jmp 0x30012451
mov eax, dword [ebp - 0x14]
lea ecx, [eax - 1]
cmp dword [ebp - 8], ecx
jne 0x3001261a
xor ecx, ecx
inc ecx
cmp eax, ecx
mov dword [ebp - 4], ecx
jg 0x3001261d
mov dword [ebp - 4], edx
cmp dword [ebp - 0x8c], edx
je 0x3001264f
cmp dword [ebp - 0xc0], 0xffffffff
jne 0x30012633
cmp dword [ebp - 0x44], edx
je 0x3001264f
mov eax, dword [ebx + 0x60]
mov ecx, dword [esi]
push 2
push dword [ebp - 4]
add eax, ecx
push eax
push eax
mov eax, dword [ebx + 0xf0]
sub eax, dword [ebp - 0xe4]
jmp 0x30012669
mov eax, dword [ebx + 0x64]
mov ecx, dword [esi]
push 2
push dword [ebp - 4]
add eax, ecx
push eax
push eax
mov eax, dword [ebx + 0xe8]
add eax, dword [ebp - 0xec]
add eax, dword [esi + 4]
mov ecx, dword [ebp - 0x74]
push eax
mov eax, dword [edi + 0x84]
neg eax
push eax
mov eax, dword [ebp - 8]
add eax, ecx
push eax
push edi
call fcn.3001ba39
xor edx, edx
cmp dword [ebp - 0x44], edx
je 0x300126d7
cmp dword [ebp - 0x14], 1
jle 0x300126d7
test word [ebx + 0x2c], 0x2000
jne 0x300126a0
mov edx, dword [ebx + 0x8c]
mov eax, dword [ebx + 0x64]
mov ecx, dword [esi]
add ecx, eax
mov eax, dword [esi + 4]
push 0x2001
push dword [ebp - 4]
push ecx
push ecx
mov ecx, dword [ebp - 0x50]
add ecx, eax
push ecx
mov ecx, dword [ebp - 0x64]
sub eax, edx
lea eax, [eax + ecx - 1]
mov ecx, dword [ebp - 0x14]
push eax
mov eax, dword [ebp - 8]
lea eax, [eax + ecx*2]
add eax, dword [ebp - 0x74]
push eax
push edi
call fcn.3001ba39
mov eax, dword [ebp - 0xb4]
cmp eax, dword [ebp - 8]
je 0x300126e5
dec dword [ebp + 0x18]
cmp dword [ebp - 0xc], 0xb40
jg 0x3001271a
inc eax
cmp eax, dword [ebp + 0x18]
mov dword [ebp - 8], eax
jl 0x30011360
xor eax, eax
cmp dword [ebp - 0xc8], eax
je 0x3001272e
mov ebx, dword [ebx + 0x38]
add ebx, dword [ebp - 0x48]
jmp 0x3001273e
push dword [ebp - 0x20]
call fcn.3004ee74
jmp 0x30012c50
mov eax, dword [edi + 0x38]
mov ecx, dword [ebp + 0x24]
mov dword [ecx], eax
mov dword [ebp - 0x30], 0x67
jmp 0x30012c47
mov ecx, dword [ebp - 0x94]
mov edx, dword [ebp - 0x48]
mov ebx, dword [ebp - 0x10]
add ecx, edx
add ebx, ecx
cmp dword [ebp - 0xf4], eax
mov dword [ebp - 0x10], ebx
jne 0x30012ab1
cmp dword [ebp - 0xfc], eax
jne 0x30012abd
mov eax, dword [ebp - 0xd0]
cmp eax, ebx
jle 0x30012766
mov dword [ebp - 0x10], eax
push 0
push edi
call fcn.3001c300
mov ecx, dword [eax + 0x64]
mov eax, dword [eax + 0x30]
lea eax, [ecx + eax + 0xa]
mov dword [edi + 0x58], eax
mov eax, dword [ebp - 0x14]
dec eax
push eax
push edi
call fcn.3001c300
mov edx, dword [eax + 0x30]
mov ecx, dword [eax + 0x64]
lea ecx, [ecx + edx - 0xa]
mov edx, dword [edi + 0x58]
mov ebx, ecx
sub ebx, edx
cmp dword [ebp - 0x14], 1
mov edx, dword [edi + 0x68]
mov dword [edi + 0x5c], ecx
jne 0x300127a5
xor edx, edx
cmp dword [ebp - 0x6c], 0
jne 0x30012885
cmp edx, 0xffffffff
je 0x30012871
test edx, edx
je 0x300127d3
cmp edx, 1
je 0x300127e1
cmp edx, 2
je 0x30012881
cmp edx, 3
jne 0x30012899
cmp dword [ebp - 0x14], 1
jne 0x300127e9
mov ebx, dword [eax + 0x64]
jmp 0x30012896
mov ebx, dword [edi + 0x58]
jmp 0x30012899
mov eax, dword [ebp - 0x10]
sub eax, dword [ebp - 0x48]
sub eax, dword [ebp - 0x5c]
cdq
sub eax, edx
mov ebx, eax
sar ebx, 1
add ebx, dword [ebp - 0x5c]
cmp dword [edi + 0x3c], 1
jne 0x30012850
mov eax, dword [edi + 0x34]
test eax, eax
je 0x3001280e
cmp eax, 2
jne 0x30012850
mov eax, dword [edi + 0xa4]
mov ecx, dword [ebp - 0x5c]
add eax, edi
neg ecx
mov dword [eax + 0xc], ecx
push dword [edi + 0x94]
push eax
call fcn.3001b15a
mov ecx, dword [ebp - 0x10]
mov dword [eax + 0xc], ecx
mov eax, dword [edi + 0xa4]
add eax, edi
push eax
push edi
call fcn.3001bbce
mov ecx, dword [edi + 0x1c]
mov eax, dword [edi + 0x24]
sub eax, ecx
cdq
sub eax, edx
mov ebx, eax
sar ebx, 1
add ebx, ecx
cmp dword [ebp - 0x14], 1
jle 0x30012899
cmp dword [ebp - 0xa0], 0
jne 0x30012899
mov eax, dword [edi + 0x58]
cmp ebx, eax
jl 0x3001286d
mov eax, dword [edi + 0x5c]
cmp ebx, eax
jle 0x30012899
mov ebx, eax
jmp 0x30012899
mov ebx, dword [edi + 0x14]
mov eax, dword [edi + 0x58]
cmp ebx, eax
jge 0x3001287d
mov ebx, eax
cmp ebx, ecx
jle 0x30012899
mov ebx, ecx
jmp 0x30012899
mov eax, dword [edi + 0x8c]
dec eax
push eax
push edi
call fcn.3001c300
mov ebx, dword [eax + 0x60]
add ebx, dword [eax + 0x30]
mov eax, dword [ebp - 0xa4]
mov ecx, dword [ebp - 0x14]
cmp ecx, 1
mov dword [edi + 0x18], eax
mov eax, dword [ebp - 0x10]
mov dword [edi + 0x14], ebx
mov dword [edi + 0x50], eax
jle 0x30012969
cmp dword [ebp - 0xa0], 0
jne 0x30012969
cmp dword [ebp - 0x6c], 0
jne 0x30012969
mov eax, dword [ebp - 0x74]
add dword [ebp - 0x74], ecx
imul eax, eax, 0x14
add eax, dword [edi + 0xa0]
and dword [ebp - 8], 0
add eax, edi
test ecx, ecx
mov edx, dword [eax + 4]
mov dword [ebp + 0xc], edx
jle 0x30012969
add eax, 0x18
mov dword [ebp + 0x14], eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax]
cmp eax, ebx
mov dword [ebp + 0x18], eax
jl 0x30012909
mov dword [ebp + 0x18], ebx
mov ebx, 0x7fff
jmp 0x3001290d
add dword [ebp + 0x14], 0x14
mov eax, dword [edi + 0x84]
mov ecx, dword [ebp - 0x74]
push 0
push 0
push dword [ebp + 0x18]
neg eax
push dword [ebp + 0xc]
push eax
push eax
mov eax, dword [ebp - 8]
add eax, ecx
push eax
push edi
call fcn.3001ba39
cmp dword [ebp - 0x44], 0
je 0x30012958
mov eax, dword [esi + 4]
mov ecx, dword [ebp - 0x14]
push 0
push 0
push dword [ebp + 0x18]
push dword [ebp + 0xc]
push eax
push eax
mov eax, dword [ebp - 8]
lea eax, [eax + ecx*2]
add eax, dword [ebp - 0x74]
push eax
push edi
call fcn.3001ba39
mov eax, dword [ebp + 0x18]
inc dword [ebp - 8]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x14]
jl 0x300128f3
push dword [ebp - 0xa0]
mov eax, dword [edi + 0x80]
add eax, dword [ebp - 0x9c]
mov ecx, dword [ebp - 0xa4]
push edi
push eax
mov eax, dword [ebp - 0x50]
add ecx, eax
mov eax, dword [ebp - 0x5c]
push ecx
push dword [ebp - 0x10]
neg eax
push eax
mov eax, dword [edi + 0xa4]
push dword [edi + 0x94]
add eax, edi
push eax
call fcn.3001b571
mov eax, dword [edi + 0xa4]
add eax, edi
push eax
push edi
call fcn.3001bbce
cmp dword [ebp - 0x6c], 0
je 0x300129c1
push edi
call fcn.3001bca5
cmp dword [ebp - 0xa0], 0
jne 0x30012c3a
xor ebx, ebx
cmp dword [ebp - 0x6c], ebx
je 0x300129eb
mov eax, dword [edi + 0x2c]
inc eax
neg eax
sbb eax, eax
and eax, dword [ebp - 0x14]
mov dword [edi + 0x98], eax
jmp 0x30012a77
mov esi, dword [ebp - 0x14]
cmp esi, 1
jle 0x30012a30
mov eax, dword [edi + 0x14]
push 1
push ebx
push eax
push eax
mov eax, dword [edi + 0x84]
neg eax
push eax
mov eax, dword [ebp - 0xa4]
neg eax
push eax
push ebx
push edi
call fcn.3001ba39
cmp dword [ebp - 0x44], ebx
lea eax, [edi + 0x98]
lea ecx, [esi + esi + 1]
mov dword [eax], ecx
je 0x30012a77
lea ecx, [esi*4 + 1]
mov dword [eax], ecx
jmp 0x30012a77
mov eax, dword [edi + 0xa0]
cmp eax, ebx
je 0x30012a65
add eax, edi
cmp dword [edi + 0x38], ebx
jne 0x30012a48
mov dword [eax], ebx
mov dword [eax + 8], ebx
jmp 0x30012a52
mov ecx, dword [ebp - 0xa4]
neg ecx
mov dword [eax], ecx
push 1
add eax, 0x10
and dword [eax], 0xffffdffc
push 3
push eax
call fcn.30067eb7
cmp dword [edi + 0x9c], ebx
je 0x30012a77
mov dword [edi + 0x98], 1
mov eax, dword [edi + 0x28]
sub eax, dword [edi + 0x20]
cmp eax, 0x870
jg 0x30012a91
mov eax, dword [edi + 0x24]
sub eax, dword [edi + 0x1c]
cmp eax, 0xb40
jle 0x30012aa0
mov eax, dword [edi + 0x38]
mov ecx, dword [ebp + 0x24]
mov dword [ecx], eax
mov dword [ebp - 0x30], 0x67
push ebx
push 2
add edi, 0x10
push edi
call fcn.30067eb7
jmp 0x30012c3a
mov dword [ebp - 0x30], 0x6b
jmp 0x30012c3a
push 1
push 8
lea esi, [edi + 0x10]
push esi
mov dword [ebp - 0x30], 0x6c
call fcn.30067eb7
mov eax, dword [ebp - 0x84]
cmp eax, dword [ebp - 0x78]
jne 0x30012b62
cmp dword [ebp - 0x98], 1
jne 0x30012b62
cmp dword [ebp - 0x38], 3
jne 0x30012b62
push eax
push edi
call fcn.3001c300
mov ecx, dword [eax + 0x28]
test ecx, ecx
jle 0x30012c3a
mov esi, dword [eax + 0x14]
mov edx, dword [ebp - 0x10]
mov edi, dword [eax + 0x30]
sub edx, esi
sub edx, edi
sub edx, dword [ebp - 0x5c]
test edx, edx
jle 0x30012c3a
cmp edx, ecx
jle 0x30012b2d
sub dword [eax + 0x18], ecx
sub edx, ecx
add ecx, esi
and dword [eax + 0x28], 0
mov dword [eax + 0x14], ecx
jmp 0x30012b34
sub ecx, edx
mov dword [eax + 0x28], ecx
xor edx, edx
test edx, edx
jle 0x30012c3a
mov ecx, edi
sub ecx, dword [eax + 0x18]
cmp ecx, dword [ebp - 0x5c]
jge 0x30012c3a
sub ecx, dword [ebp - 0x5c]
neg edx
cmp ecx, edx
mov dword [eax + 0x28], ecx
jge 0x30012c3a
mov dword [eax + 0x28], edx
jmp 0x30012c3a
xor ebx, ebx
cmp dword [ebp - 0xbc], ebx
je 0x30012c3a
test byte [esi], 4
jne 0x30012c3a
cmp dword [ebp - 0x98], ebx
je 0x30012c3a
or dword [ebp - 0x78], 0xffffffff
cmp dword [ebp - 0x14], ebx
mov dword [ebp - 4], 0x7fff
mov dword [ebp - 0x3c], ebx
jle 0x30012c3a
push ebx
push edi
call fcn.3001c300
mov esi, eax
push esi
push edi
call fcn.3001c5e9
cmp eax, 0xffffffff
je 0x30012bd3
mov eax, dword [esi + 0x28]
cmp eax, dword [ebp - 4]
jge 0x30012bbc
mov dword [ebp - 4], eax
mov eax, dword [esi + 0x30]
add eax, dword [esi + 0x14]
cmp eax, dword [ebp - 0x3c]
jle 0x30012bca
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x78], 0
jge 0x30012bd3
mov dword [ebp - 0x78], ebx
inc ebx
cmp ebx, dword [ebp - 0x14]
jl 0x30012b9c
cmp dword [ebp - 4], 0
jle 0x30012c3a
cmp dword [ebp - 0x78], 0
jl 0x30012c3a
mov eax, dword [ebp - 0x10]
cmp dword [ebp - 0x3c], eax
jle 0x30012c0d
push dword [ebp - 0x78]
push edi
call fcn.3001c300
mov ecx, dword [eax + 0x18]
sub ecx, dword [eax + 0x30]
add ecx, dword [ebp - 0x5c]
test ecx, ecx
jle 0x30012c18
cmp dword [ebp - 4], ecx
jle 0x30012c18
mov dword [ebp - 4], ecx
jmp 0x30012c18
sub eax, dword [ebp - 0x3c]
cmp dword [ebp - 4], eax
jle 0x30012c18
mov dword [ebp - 4], eax
xor ebx, ebx
push ebx
push edi
call fcn.3001c300
mov esi, eax
push esi
push edi
call fcn.3001c5e9
test eax, eax
je 0x30012c34
mov eax, dword [ebp - 4]
sub dword [esi + 0x28], eax
inc ebx
cmp ebx, dword [ebp - 0x14]
jl 0x30012c1a
cmp dword [ebp - 0x80], 0
je 0x30012c47
mov dword [ebp - 0x30], 0x6c
push dword [ebp + 0x10]
call dword [sym.imp.KERNEL32.dll_GlobalUnlock]
mov eax, dword [ebp - 0x30]
pop edi
pop esi
pop ebx
leave
ret 0x24