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

Disassembly:
sub esp, 0x5c
mov ecx, dword [esp + 0x6c]
push ebx
push ebp
mov ebp, dword [esp + 0x68]
mov eax, dword [ebp]
mov dword [esp + 8], eax
xor eax, eax
xor ebx, ebx
cmp ecx, ebx
setne al
push esi
mov esi, dword [esp + 0x74]
push edi
movzx ecx, byte [eax + esi + 0x19]
cmp ecx, ebx
mov edi, dword [esi + eax*4 + 0x1c]
mov dword [esp + 0x48], eax
mov dword [esp + 0x38], ecx
je 0x1015aafc
cmp edi, ebx
jne 0x1015aafc
mov eax, dword [esp + 0x74]
lea ecx, [esp + 0x30]
push ecx
lea edx, [esp + 0x40]
push edx
push esi
push eax
push ebp
mov dword [esp + 0x50], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x28], ebx
call fcn.10151ff7
add esp, 0x14
test eax, eax
jne 0x1015aa95
cmp dword [esi + 0x14], ebx
mov dword [esp + 0x20], ebx
jle 0x1015a7bf
mov eax, 3
mov dword [esp + 0x5c], 0x101884d4
mov dword [esp + 0x60], eax
mov dword [esp + 0x64], 0x101884d0
mov dword [esp + 0x68], eax
jmp 0x10159ea7
mov eax, dword [esp + 0x30]
test eax, eax
je 0x10159eb8
mov ecx, dword [esp + 0x20]
mov edx, dword [eax + ecx*4]
jmp 0x10159ebf
mov edx, dword [esp + 0x78]
mov edx, dword [edx + 0x24]
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x10159ee0
mov eax, dword [eax + 4]
mov ecx, dword [esp + 0x20]
mov eax, dword [eax + ecx*4]
mov ecx, dword [esp + 0x74]
mov ecx, dword [ecx + 4]
lea eax, [eax + eax*2]
mov ecx, dword [ecx + eax*8]
jmp 0x10159ee5
mov ecx, 0x101884cc
lea eax, [edx + edx*2]
mov edx, dword [esp + 0x78]
mov edx, dword [edx]
mov edx, dword [edx + 4]
shl eax, 3
test ecx, ecx
mov edx, dword [eax + edx]
mov dword [esp + 0x44], eax
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x54], edx
mov eax, ecx
je 0x10159f1d
cmp byte [ecx], 0
je 0x10159f16
mov bl, byte [eax + 1]
inc eax
test bl, bl
jne 0x10159f0e
sub eax, ecx
and eax, 0x3fffffff
test edx, edx
mov dword [esp + 0x50], eax
mov eax, edx
je 0x10159f3b
cmp byte [edx], 0
je 0x10159f34
mov cl, byte [eax + 1]
inc eax
test cl, cl
jne 0x10159f2c
sub eax, edx
and eax, 0x3fffffff
push 1
mov dword [esp + 0x30], eax
mov dword [esp + 0x5c], eax
mov eax, dword [ebp]
push 0x1a
push eax
lea ebx, [esp + 0x60]
call fcn.1014f747
mov edi, dword [ebp]
mov esi, eax
add esp, 0xc
test esi, esi
mov dword [esp + 0x40], esi
jne 0x10159f77
push eax
push edi
call fcn.10148957
push esi
push edi
call fcn.10148957
add esp, 0x10
jmp 0x10159f97
call fcn.1013f677
mov ecx, dword [ebp]
mov eax, dword [ecx + 0x5c]
cmp dword [esi + 0x14], eax
jle 0x10159f97
push eax
push 0x101879e4
mov edi, ebp
call fcn.1014d297
add esp, 8
mov edx, dword [ebp]
push 1
push 0x1a
push edx
lea ebx, [esp + 0x58]
call fcn.1014f747
mov edi, dword [ebp]
mov esi, eax
add esp, 0xc
test esi, esi
mov dword [esp + 0x28], esi
jne 0x10159fcb
push eax
push edi
call fcn.10148957
push esi
push edi
call fcn.10148957
add esp, 0x10
jmp 0x10159feb
call fcn.1013f677
mov eax, dword [ebp]
mov eax, dword [eax + 0x5c]
cmp dword [esi + 0x14], eax
jle 0x10159feb
push eax
push 0x101879e4
mov edi, ebp
call fcn.1014d297
add esp, 8
mov ecx, dword [ebp]
push 1
push 0x1a
push ecx
lea ebx, [esp + 0x68]
call fcn.1014f747
mov esi, dword [ebp]
mov edi, eax
add esp, 0xc
test edi, edi
mov dword [esp + 0x70], edi
jne 0x1015a01f
push eax
push esi
call fcn.10148957
push edi
push esi
call fcn.10148957
add esp, 0x10
jmp 0x1015a045
mov esi, edi
call fcn.1013f677
mov edx, dword [ebp]
mov eax, dword [edx + 0x5c]
cmp dword [edi + 0x14], eax
jle 0x1015a045
push eax
push 0x101879e4
mov edi, ebp
call fcn.1014d297
mov edi, dword [esp + 0x78]
add esp, 8
mov esi, dword [ebp]
mov ecx, 0x2c
call fcn.10143be7
mov ebx, eax
test ebx, ebx
je 0x1015a077
mov ecx, 0xb
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x70]
mov byte [ebx], 0x76
mov word [ebx + 0x1e], 0xffff
mov dword [ebx + 0x14], 1
test ebx, ebx
mov esi, dword [ebp]
jne 0x1015a095
push edi
push esi
call fcn.10148957
mov eax, dword [esp + 0x30]
push eax
push esi
call fcn.10148957
add esp, 0x10
jmp 0x1015a0e9
mov eax, dword [esp + 0x28]
test eax, eax
je 0x1015a0b0
xor ecx, ecx
mov dword [ebx + 0xc], eax
mov cx, word [eax + 2]
and ecx, 0x100
or word [ebx + 2], cx
test edi, edi
je 0x1015a0c7
xor edx, edx
mov dword [ebx + 8], edi
mov dx, word [edi + 2]
and edx, 0x100
or word [ebx + 2], dx
mov esi, ebx
call fcn.1013f677
mov eax, dword [ebp]
mov eax, dword [eax + 0x5c]
cmp dword [ebx + 0x14], eax
jle 0x1015a0e9
push eax
push 0x101879e4
mov edi, ebp
call fcn.1014d297
add esp, 8
mov esi, dword [ebp]
mov ecx, 0x2c
call fcn.10143be7
mov esi, eax
test esi, esi
je 0x1015a117
mov ecx, 0xb
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
mov byte [esi], 0x4c
mov word [esi + 0x1e], 0xffff
mov dword [esi + 0x14], 1
test esi, esi
mov edi, dword [ebp]
jne 0x1015a135
push ebx
push edi
call fcn.10148957
mov ecx, dword [esp + 0x48]
push ecx
push edi
call fcn.10148957
add esp, 0x10
jmp 0x1015a186
mov eax, dword [esp + 0x40]
test eax, eax
je 0x1015a150
xor edx, edx
mov dword [esi + 0xc], eax
mov dx, word [eax + 2]
and edx, 0x100
or word [esi + 2], dx
test ebx, ebx
je 0x1015a166
xor eax, eax
mov dword [esi + 8], ebx
mov ax, word [ebx + 2]
and eax, 0x100
or word [esi + 2], ax
call fcn.1013f677
mov ecx, dword [ebp]
mov eax, dword [ecx + 0x5c]
cmp dword [esi + 0x14], eax
jle 0x1015a186
push eax
push 0x101879e4
mov edi, ebp
call fcn.1014d297
add esp, 8
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
push esi
call fcn.1014f907
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x80]
add esp, 4
test eax, eax
je 0x1015a502
mov edx, dword [ebp]
push 1
push 0x1a
push edx
lea ebx, [esp + 0x58]
call fcn.1014f747
mov esi, dword [ebp]
mov edi, eax
add esp, 0xc
test edi, edi
mov dword [esp + 0x28], edi
jne 0x1015a1de
push eax
push esi
call fcn.10148957
push edi
push esi
call fcn.10148957
add esp, 0x10
jmp 0x1015a204
mov esi, edi
call fcn.1013f677
mov eax, dword [ebp]
mov eax, dword [eax + 0x5c]
cmp dword [edi + 0x14], eax
jle 0x1015a204
push eax
push 0x101879e4
mov edi, ebp
call fcn.1014d297
mov edi, dword [esp + 0x30]
add esp, 8
mov ecx, dword [ebp]
push 1
push 0x1a
push ecx
lea ebx, [esp + 0x70]
call fcn.1014f747
mov esi, dword [ebp]
mov ebx, eax
add esp, 0xc
test ebx, ebx
jne 0x1015a234
push eax
push esi
call fcn.10148957
push ebx
push esi
call fcn.10148957
add esp, 0x10
jmp 0x1015a25a
mov esi, ebx
call fcn.1013f677
mov edx, dword [ebp]
mov eax, dword [edx + 0x5c]
cmp dword [ebx + 0x14], eax
jle 0x1015a25a
push eax
push 0x101879e4
mov edi, ebp
call fcn.1014d297
mov edi, dword [esp + 0x30]
add esp, 8
mov esi, dword [ebp]
mov ecx, 0x2c
call fcn.10143be7
mov esi, eax
test esi, esi
mov dword [esp + 0x70], esi
je 0x1015a292
mov edx, esi
mov ecx, 0xb
xor eax, eax
mov edi, edx
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x28]
mov byte [edx], 0x76
mov word [edx + 0x1e], 0xffff
mov dword [edx + 0x14], 1
test esi, esi
mov eax, dword [ebp]
mov dword [esp + 0x40], eax
jne 0x1015a2b2
mov esi, eax
push ebx
push esi
call fcn.10148957
push edi
push esi
call fcn.10148957
add esp, 0x10
jmp 0x1015a300
test edi, edi
je 0x1015a2c9
xor ecx, ecx
mov dword [esi + 0xc], edi
mov cx, word [edi + 2]
and ecx, 0x100
or word [esi + 2], cx
test ebx, ebx
je 0x1015a2e0
xor edx, edx
mov dword [esi + 8], ebx
mov dx, word [ebx + 2]
and edx, 0x100
or word [esi + 2], dx
call fcn.1013f677
mov eax, dword [ebp]
mov eax, dword [eax + 0x5c]
cmp dword [esi + 0x14], eax
jle 0x1015a300
push eax
push 0x101879e4
mov edi, ebp
call fcn.1014d297
add esp, 8
mov ecx, dword [ebp]
push 1
push 0x1a
push ecx
lea ebx, [esp + 0x58]
call fcn.1014f747
mov edi, dword [ebp]
mov esi, eax
add esp, 0xc
test esi, esi
mov dword [esp + 0x28], esi
jne 0x1015a334
push eax
push edi
call fcn.10148957
push esi
push edi
call fcn.10148957
add esp, 0x10
jmp 0x1015a354
call fcn.1013f677
mov edx, dword [ebp]
mov eax, dword [edx + 0x5c]
cmp dword [esi + 0x14], eax
jle 0x1015a354
push eax
push 0x101879e4
mov edi, ebp
call fcn.1014d297
add esp, 8
mov eax, dword [ebp]
push 1
push 0x1a
push eax
lea ebx, [esp + 0x68]
call fcn.1014f747
mov esi, dword [ebp]
mov edi, eax
add esp, 0xc
test edi, edi
mov dword [esp + 0x40], edi
jne 0x1015a388
push eax
push esi
call fcn.10148957
push edi
push esi
call fcn.10148957
add esp, 0x10
jmp 0x1015a3ae
mov esi, edi
call fcn.1013f677
mov ecx, dword [ebp]
mov eax, dword [ecx + 0x5c]
cmp dword [edi + 0x14], eax
jle 0x1015a3ae
push eax
push 0x101879e4
mov edi, ebp
call fcn.1014d297
mov edi, dword [esp + 0x48]
add esp, 8
mov esi, dword [ebp]
mov ecx, 0x2c
call fcn.10143be7
mov ebx, eax
test ebx, ebx
je 0x1015a3e0
mov ecx, 0xb
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x40]
mov byte [ebx], 0x76
mov word [ebx + 0x1e], 0xffff
mov dword [ebx + 0x14], 1
test ebx, ebx
mov esi, dword [ebp]
jne 0x1015a3fe
push edi
push esi
call fcn.10148957
mov edx, dword [esp + 0x30]
push edx
push esi
call fcn.10148957
add esp, 0x10
jmp 0x1015a44f
mov eax, dword [esp + 0x28]
test eax, eax
je 0x1015a416
mov dword [ebx + 0xc], eax
movzx eax, word [eax + 2]
and eax, 0x100
or word [ebx + 2], ax
test edi, edi
je 0x1015a42d
xor ecx, ecx
mov dword [ebx + 8], edi
mov cx, word [edi + 2]
and ecx, 0x100
or word [ebx + 2], cx
mov esi, ebx
call fcn.1013f677
mov edx, dword [ebp]
mov eax, dword [edx + 0x5c]
cmp dword [ebx + 0x14], eax
jle 0x1015a44f
push eax
push 0x101879e4
mov edi, ebp
call fcn.1014d297
add esp, 8
mov esi, dword [ebp]
mov ecx, 0x2c
call fcn.10143be7
mov esi, eax
test esi, esi
je 0x1015a47d
mov ecx, 0xb
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
mov byte [esi], 0x46
mov word [esi + 0x1e], 0xffff
mov dword [esi + 0x14], 1
test esi, esi
mov edi, dword [ebp]
jne 0x1015a49b
push ebx
push edi
call fcn.10148957
mov eax, dword [esp + 0x78]
push eax
push edi
call fcn.10148957
add esp, 0x10
jmp 0x1015a4ed
mov eax, dword [esp + 0x70]
test eax, eax
je 0x1015a4b6
xor ecx, ecx
mov dword [esi + 0xc], eax
mov cx, word [eax + 2]
and ecx, 0x100
or word [esi + 2], cx
test ebx, ebx
je 0x1015a4cd
xor edx, edx
mov dword [esi + 8], ebx
mov dx, word [ebx + 2]
and edx, 0x100
or word [esi + 2], dx
call fcn.1013f677
mov eax, dword [ebp]
mov eax, dword [eax + 0x5c]
cmp dword [esi + 0x14], eax
jle 0x1015a4ed
push eax
push 0x101879e4
mov edi, ebp
call fcn.1014d297
add esp, 8
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push esi
call fcn.1014f907
add esp, 4
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x38]
cmp eax, 6
je 0x1015a7a7
cmp eax, 9
jne 0x1015a66a
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x1015a7a7
mov ecx, dword [ebp]
push 1
push 0x1a
push ecx
lea ebx, [esp + 0x58]
call fcn.1014f747
mov esi, dword [ebp]
mov edi, eax
add esp, 0xc
test edi, edi
mov dword [esp + 0x70], edi
jne 0x1015a558
push eax
push esi
call fcn.10148957
push edi
push esi
call fcn.10148957
add esp, 0x10
jmp 0x1015a57e
mov esi, edi
call fcn.1013f677
mov edx, dword [ebp]
mov eax, dword [edx + 0x5c]
cmp dword [edi + 0x14], eax
jle 0x1015a57e
push eax
push 0x101879e4
mov edi, ebp
call fcn.1014d297
mov edi, dword [esp + 0x78]
add esp, 8
mov eax, dword [ebp]
push 1
push 0x1a
push eax
lea ebx, [esp + 0x70]
call fcn.1014f747
mov esi, dword [ebp]
mov ebx, eax
add esp, 0xc
test ebx, ebx
jne 0x1015a5ae
push eax
push esi
call fcn.10148957
push ebx
push esi
call fcn.10148957
add esp, 0x10
jmp 0x1015a5d4
mov esi, ebx
call fcn.1013f677
mov ecx, dword [ebp]
mov eax, dword [ecx + 0x5c]
cmp dword [ebx + 0x14], eax
jle 0x1015a5d4
push eax
push 0x101879e4
mov edi, ebp
call fcn.1014d297
mov edi, dword [esp + 0x78]
add esp, 8
mov esi, dword [ebp]
mov ecx, 0x2c
call fcn.10143be7
mov esi, eax
test esi, esi
je 0x1015a606
mov ecx, 0xb
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x70]
mov byte [esi], 0x76
mov word [esi + 0x1e], 0xffff
mov dword [esi + 0x14], 1
test esi, esi
mov edx, dword [ebp]
mov dword [esp + 0x70], edx
jne 0x1015a62d
mov eax, edx
push ebx
push eax
call fcn.10148957
mov ecx, dword [esp + 0x78]
push edi
push ecx
call fcn.10148957
add esp, 0x10
jmp 0x1015a73e
test edi, edi
je 0x1015a644
xor edx, edx
mov dword [esi + 0xc], edi
mov dx, word [edi + 2]
and edx, 0x100
or word [esi + 2], dx
test ebx, ebx
je 0x1015a65a
xor eax, eax
mov dword [esi + 8], ebx
mov ax, word [ebx + 2]
and eax, 0x100
or word [esi + 2], ax
call fcn.1013f677
mov ecx, dword [ebp]
mov eax, dword [ecx + 0x5c]
jmp 0x1015a729
cmp eax, 8
jne 0x1015a6d4
mov edx, dword [esp + 0x78]
mov eax, dword [edx]
mov ecx, dword [eax + 4]
mov edx, dword [esp + 0x44]
mov eax, dword [ecx + edx + 4]
test eax, eax
je 0x1015a69d
push 0
push 0
push eax
mov eax, dword [esp + 0x1c]
push eax
call fcn.10157e77
add esp, 0x10
mov esi, eax
jmp 0x1015a73e
mov esi, dword [ebp]
mov ecx, 0x2c
call fcn.10143be7
mov esi, eax
test esi, esi
je 0x1015a6cb
mov ecx, 0xb
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
mov byte [esi], 0x62
mov word [esi + 0x1e], 0xffff
mov dword [esi + 0x14], 1
test esi, esi
mov edi, dword [ebp]
jne 0x1015a65a
jmp 0x1015a709
mov esi, dword [ebp]
mov ecx, 0x2c
call fcn.10143be7
mov esi, eax
test esi, esi
je 0x1015a702
mov ecx, 0xb
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
mov byte [esi], 0x62
mov word [esi + 0x1e], 0xffff
mov dword [esi + 0x14], 1
test esi, esi
mov edi, dword [ebp]
jne 0x1015a71e
push 0
push edi
call fcn.10148957
push 0
push edi
call fcn.10148957
add esp, 0x10
jmp 0x1015a73e
call fcn.1013f677
mov edx, dword [ebp]
mov eax, dword [edx + 0x5c]
cmp dword [esi + 0x14], eax
jle 0x1015a73e
push eax
mov edi, ebp
push 0x101879e4
call fcn.1014d297
add esp, 8
mov ecx, dword [esp + 0x24]
mov ebx, esi
mov eax, ebp
call fcn.10150007
mov ecx, eax
test ecx, ecx
mov dword [esp + 0x24], ecx
je 0x1015a7a7
mov eax, dword [ecx]
mov ecx, dword [ecx + 8]
mov esi, dword [ebp]
lea eax, [eax + eax*4]
lea edx, [ecx + eax*4 - 0x14]
mov eax, dword [esp + 0x54]
test eax, eax
mov dword [esp + 0x70], edx
jne 0x1015a774
xor eax, eax
jmp 0x1015a7a0
mov ecx, dword [esp + 0x2c]
inc ecx
call fcn.10143be7
test eax, eax
je 0x1015a7a0
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x54]
mov ecx, edx
mov ebx, ecx
shr ecx, 2
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov byte [eax + edx], 0
mov ecx, dword [esp + 0x70]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x78]
mov ecx, dword [edx + 0x14]
inc eax
cmp eax, ecx
mov dword [esp + 0x20], eax
jl 0x10159ea7
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x30]
mov ecx, esi
call fcn.101394e7
mov eax, dword [esp + 0x78]
mov ecx, dword [eax]
mov ecx, dword [ecx]
test ecx, ecx
mov dword [esp + 0x44], ecx
mov eax, ecx
jne 0x1015a7e6
mov dword [esp + 0x20], ecx
jmp 0x1015a7fe
cmp byte [ecx], 0
je 0x1015a7f3
mov dl, byte [eax + 1]
inc eax
test dl, dl
jne 0x1015a7eb
sub eax, ecx
and eax, 0x3fffffff
mov dword [esp + 0x20], eax
cmp dword [esp + 0x38], 6
jne 0x1015a8e0
mov edx, dword [esp + 0x20]
mov dword [esp + 0x64], ecx
push 0x38
push esi
mov ecx, 0x1018830c
mov dword [esp + 0x70], edx
call fcn.1014f867
mov ebx, eax
add esp, 8
test ebx, ebx
mov dword [esp + 0x70], ebx
je 0x1015a833
mov byte [ebx + 1], 2
mov ecx, 0x50
call fcn.10143be7
mov edx, eax
test edx, edx
je 0x1015a880
mov esi, dword [esp + 0x10]
xor eax, eax
mov edi, edx
mov ecx, 0x14
rep stosd dword es:[edi], eax
mov word [edx + 2], 1
movsx eax, word [edx]
push eax
push 1
mov eax, edx
mov ecx, esi
call fcn.10149bf7
mov edi, eax
mov al, byte [esi + 0x38]
add esp, 8
test al, al
je 0x1015a884
push edi
call fcn.10140537
add esp, 4
xor edi, edi
jmp 0x1015a8ac
xor edi, edi
jmp 0x1015a8b0
movsx eax, word [edi]
lea ecx, [eax + eax*8]
lea eax, [esp + 0x64]
mov edx, esi
lea ebx, [edi + ecx*8 - 0x40]
call fcn.101498c7
mov dword [ebx + 8], eax
xor eax, eax
mov edx, esi
call fcn.101498c7
mov dword [ebx + 4], eax
mov ebx, dword [esp + 0x70]
mov esi, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
push 0
push 0
push 0
push 0
push 0
push 0
push edx
push edi
xor ecx, ecx
mov eax, ebp
call fcn.10150007
push ebp
call fcn.10152527
add esp, 0x24
mov dword [esp + 0x34], eax
mov dword [esp + 0x18], 0
mov edi, dword [esp + 0x20]
mov al, byte [esi + 0xea]
add edi, 0x4d
mov ecx, edi
mov byte [esp + 0x70], al
mov byte [esi + 0xea], 0
call fcn.10143be7
mov ebx, eax
test ebx, ebx
je 0x1015a919
mov ecx, edi
mov edx, ecx
shr ecx, 2
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
test ebx, ebx
mov edi, ebx
mov dword [esp + 0x40], edi
je 0x1015aa39
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x44]
lea eax, [ebx + 0x24]
mov dword [ebx + 0x1c], eax
mov dword [eax + 0x10], ecx
lea edi, [eax + 0x28]
mov dword [eax + 0xc], edi
mov dword [esp + 0x1c], eax
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
push 0
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0x14]
push 1
push ecx
push edi
call fcn.10157e77
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x2c]
push 1
push edx
push edi
mov dword [esi + 0x14], eax
call fcn.101489e7
mov dword [esi + 0x18], eax
mov eax, dword [esp + 0x50]
push 1
push eax
push edi
call fcn.1014ff07
mov dword [esi + 8], eax
mov eax, dword [esp + 0x3c]
add esp, 0x28
test eax, eax
je 0x1015aa35
mov esi, dword [ebp]
mov ecx, 0x2c
call fcn.10143be7
mov esi, eax
test esi, esi
je 0x1015a9c7
mov ecx, 0xb
xor eax, eax
mov edi, esi
rep stosd dword es:[edi], eax
mov byte [esi], 0x13
mov word [esi + 0x1e], 0xffff
mov dword [esi + 0x14], 1
test esi, esi
mov edi, dword [ebp]
jne 0x1015a9e5
mov ecx, dword [esp + 0x14]
push ecx
push edi
call fcn.10148957
push esi
push edi
call fcn.10148957
add esp, 0x10
jmp 0x1015aa1c
mov eax, dword [esp + 0x14]
xor edx, edx
mov dword [esi + 8], eax
mov dx, word [eax + 2]
and edx, 0x100
or word [esi + 2], dx
call fcn.1013f677
mov eax, dword [ebp]
mov eax, dword [eax + 0x5c]
cmp dword [esi + 0x14], eax
jle 0x1015aa1c
push eax
push 0x101879e4
mov edi, ebp
call fcn.1014d297
add esp, 8
mov ecx, dword [esp + 0x10]
push 0
push 1
push esi
push ecx
mov dword [esp + 0x24], esi
call fcn.10157e77
add esp, 0x10
mov dword [ebx + 0xc], eax
mov edi, dword [esp + 0x40]
mov eax, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
mov dl, byte [esp + 0x70]
push eax
push esi
mov byte [esi + 0xea], dl
call fcn.10148957
mov ecx, dword [esp + 0x1c]
push ecx
push esi
call fcn.10148957
mov edx, dword [esp + 0x34]
push edx
push esi
call fcn.10148d07
mov ebp, dword [esp + 0x4c]
add esp, 0x18
test ebp, ebp
je 0x1015aa86
push ebp
push esi
call fcn.10140fd7
add esp, 8
mov eax, ebp
mov ecx, esi
call fcn.101394e7
cmp byte [esi + 0x38], 1
jne 0x1015aa9f
mov edi, dword [esp + 0x10]
call fcn.1014a187
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x5c
ret
mov eax, dword [esp + 0x38]
cmp eax, 6
je 0x1015aac7
cmp eax, 9
jne 0x1015aabe
mov eax, dword [esp + 0x7c]
test eax, eax
jne 0x1015aabe
mov eax, dword [esp + 0x1c]
mov byte [eax], 0x6a
jmp 0x1015aace
mov eax, dword [esp + 0x1c]
mov byte [eax], 0x6b
jmp 0x1015aace
mov eax, dword [esp + 0x1c]
mov byte [eax], 0x74
mov dword [eax + 4], ebx
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 0x40]
mov dword [ebx + 0x14], ecx
mov edx, dword [eax + 0x40]
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x78]
mov dword [ebx + 0x18], edx
mov dword [eax + ecx*4 + 0x1c], ebx
mov ecx, dword [esp + 0x7c]
test ecx, ecx
setne dl
add dl, 0x6a
mov byte [ebx + 8], dl
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret