Function at 0x18127c4f
Capabilities:
Encode data using base64
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xbc
push ebx
push esi
mov esi, dword [ecx]
xor ebx, ebx
push edi
lea edi, [ecx + 0x2f0]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x24], edx
mov eax, dword [esi + 8]
mov dword [esp + 0xc], eax
lea eax, [ecx + 0x50]
mov dword [esp + 0x78], eax
mov eax, dword [esi]
mov dword [esp + 0x74], eax
imul eax, edx, 0x50
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x84], ebx
mov dword [esp + 0x44], esi
add edi, eax
mov dword [esp + 0x80], edi
mov eax, dword [edi + 0x40]
mov dword [esp + 0x38], eax
movzx eax, byte [edi + 0x2c]
imul ecx, eax, 0x50
mov eax, dword [edx + 4]
add eax, 8
add eax, ecx
lea ecx, [edx + 0x1e8]
mov dword [esp + 0x10], eax
mov eax, dword [eax + 0x30]
mov edx, eax
mov dword [esp + 0x3c], eax
call fcn.1812b06f
mov ecx, dword [esp + 0x4c]
not eax
and eax, dword [ebp + 8]
not edx
and edx, dword [ebp + 0xc]
mov dword [edi + 0x48], eax
mov dword [edi + 0x4c], edx
mov eax, dword [ecx + 0x40]
mov edx, dword [ecx + 0x44]
mov ecx, dword [esp + 0x24]
call fcn.181867c0
xor ecx, ecx
inc ecx
and eax, ecx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x38]
push 0x20
pop edx
test byte [eax + 0x24], 0x40
je 0x18127d13
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x18], ecx
test byte [eax + 0x2c], dl
je 0x18127d17
mov dword [esp + 0x18], ebx
mov ecx, dword [esp + 0xc]
call fcn.180f79a6
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x40], eax
mov dword [edi + 0x10], eax
mov dword [edi + 0xc], eax
call fcn.180f79a6
mov edx, dword [esp + 0x10]
mov dword [esp + 0x88], eax
mov dword [edi + 0x18], eax
cmp byte [edi + 0x2c], bl
jbe 0x18127d6b
test byte [edx + 0x24], 8
je 0x18127d6b
mov eax, dword [esi + 0x2c]
mov ecx, dword [esp + 0xc]
inc eax
push ebx
push eax
push ebx
push 0x43
mov dword [esi + 0x2c], eax
pop edx
mov dword [edi], eax
call fcn.180f7767
mov edx, dword [esp + 0x1c]
add esp, 0xc
mov ecx, dword [esp + 0x24]
mov eax, ecx
test ecx, ecx
jle 0x18127d83
mov ecx, edi
cmp dword [ecx], ebx
jne 0x18127d83
dec eax
sub ecx, 0x50
test eax, eax
jg 0x18127d77
mov ecx, dword [esp + 0x4c]
imul eax, eax, 0x50
mov eax, dword [eax + ecx + 0x2fc]
mov dword [esp + 0x2c], eax
mov eax, dword [edx + 0x28]
mov dword [esp + 0x7c], eax
test al, 0x10
je 0x18127dd9
push dword [edx + 0x18]
mov esi, dword [edx + 0x1c]
mov ecx, dword [esp + 0x10]
push ebx
push esi
push 0xf
pop edx
call fcn.180f7767
mov ecx, dword [esp + 0x18]
add esp, 0xc
push ebx
push dword [esp + 0x44]
push esi
push 0x10
pop edx
call fcn.180f7767
mov esi, dword [esp + 0x50]
add esp, 0xc
mov byte [edi + 0x2d], 0xd
jmp 0x18129019
mov eax, dword [esp + 0x38]
mov edx, dword [eax + 0x24]
bt edx, 0xa
jae 0x18128018
movzx eax, word [eax + 0x28]
mov ecx, esi
inc dword [esi + 0x3c]
mov dword [esp + 0x10], eax
lea edx, [eax + 2]
call fcn.1810ac6a
mov ecx, eax
mov eax, dword [edi + 0xc]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x18], eax
cmp dword [esp + 0x10], ebx
jbe 0x18127e61
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 0x30]
mov edx, dword [eax + ebx*4]
test edx, edx
je 0x18127e58
lea eax, [ecx + 2]
mov ecx, esi
add eax, ebx
test byte [edx + 0xc], 1
je 0x18127e45
push eax
push dword [esp + 0x4c]
push ebx
push edi
call fcn.18127484
mov eax, dword [edi + 0x10]
add esp, 0x10
mov dword [esp + 0x18], eax
jmp 0x18127e54
mov edx, dword [edx]
push 1
push eax
mov edx, dword [edx + 0x10]
call fcn.18127af9
pop ecx
pop ecx
mov ecx, dword [esp + 0x28]
inc ebx
cmp ebx, dword [esp + 0x10]
jl 0x18127e12
xor ebx, ebx
mov eax, dword [esp + 0x38]
push ebx
push ecx
mov ecx, dword [esp + 0x14]
push dword [eax + 0x18]
push 0x43
pop edx
call fcn.180f7767
mov eax, dword [esp + 0x34]
add esp, 0xc
mov ecx, dword [esp + 0xc]
inc eax
push ebx
push eax
push dword [esp + 0x18]
push 0x43
pop edx
call fcn.180f7767
mov ecx, dword [esp + 0x44]
add esp, 0xc
xor eax, eax
cmp byte [ecx + 0x1c], al
sete al
dec eax
and eax, 0xfffffffa
dec eax
push eax
push dword [ecx + 0x20]
mov ecx, dword [esp + 0x14]
push dword [esp + 0x30]
push dword [esp + 0x24]
push dword [esp + 0x4c]
push 0xb
pop eax
mov edx, eax
call fcn.180f7892
mov eax, dword [esp + 0x4c]
add esp, 0x14
mov ecx, dword [esp + 0x10]
mov byte [eax + 0x1c], bl
mov eax, dword [esp + 0x3c]
mov edx, dword [edi + 0x38]
mov dword [edi + 0x30], eax
mov eax, dword [esp + 0x4c]
cmp byte [eax + 0x31], 0
sete al
dec al
and al, 0x6c
add al, 0x3d
sub ecx, 1
mov byte [edi + 0x2d], al
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1c], ecx
mov eax, dword [eax + 0x88]
mov dword [edi + 0x34], eax
js 0x1812800c
imul eax, edx, 0xc
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x28]
add eax, 2
add eax, ecx
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x38]
mov eax, dword [eax + 0x30]
mov edx, dword [eax + ecx*4]
mov dword [esp + 0x2c], edx
cmp ecx, 0x10
jae 0x18127f4e
mov eax, dword [esp + 0x38]
mov ax, word [eax + 0x1e]
shr ax, cl
test al, 1
je 0x18127f4a
mov ecx, edi
call fcn.18127200
jmp 0x18127ff7
mov ecx, dword [esp + 0x1c]
test byte [edx + 0xc], 1
je 0x18127ffb
mov eax, dword [esp + 0x74]
cmp byte [eax + 0x49], 0
jne 0x18127f91
mov eax, dword [esp + 0x18]
mov edx, dword [edi + 0x3c]
sub eax, 0xc
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x18], eax
mov edx, dword [edx + eax + 4]
call fcn.180f7ea8
push dword [eax + 0xc]
movzx edx, byte [eax]
push dword [eax + 8]
push dword [eax + 4]
call fcn.180f7767
add esp, 0xc
push ebx
push ebx
push 0x35
pop edx
mov ecx, esi
call fcn.181065d6
mov dword [esp + 0x58], eax
pop ecx
pop ecx
test eax, eax
je 0x18127ff7
mov ecx, dword [esp + 0x2c]
mov edx, 0x98
push ebx
mov ecx, dword [ecx]
mov ecx, dword [ecx + 0xc]
mov dword [eax + 0xc], ecx
mov ecx, dword [esp + 0x78]
call fcn.1810653d
pop ecx
mov ecx, eax
mov eax, dword [esp + 0x50]
mov dword [eax + 0x10], ecx
test ecx, ecx
je 0x18127fe9
mov edx, dword [esp + 0x24]
push ebx
mov dword [ecx + 0x1c], edx
push dword [edi + 0x18]
push eax
push esi
call fcn.1810a110
mov eax, dword [esp + 0x60]
add esp, 0x10
mov ecx, dword [esp + 0x74]
mov edx, eax
mov dword [eax + 0xc], ebx
call fcn.181068fb
mov ecx, dword [esp + 0x1c]
dec ecx
dec dword [esp + 0x24]
mov dword [esp + 0x1c], ecx
test ecx, ecx
jns 0x18127f1c
mov ecx, esi
call fcn.1810898e
jmp 0x1812901c
test dl, 5
setne cl
bt edx, 8
setb al
test al, cl
je 0x181280a1
mov eax, dword [esp + 0x38]
mov ecx, esi
mov eax, dword [eax + 0x30]
mov edx, dword [eax]
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
push eax
push dword [esp + 0x4c]
mov dword [esp + 0x34], eax
push ebx
push edi
call fcn.18127484
mov edx, dword [esp + 0x3c]
add esp, 0x10
mov dword [esp + 0x24], eax
cmp eax, edx
je 0x18128064
mov ecx, esi
call fcn.1810ac27
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0xc]
push eax
push dword [edi + 0x10]
push dword [esp + 0x44]
push 0x1f
pop edx
call fcn.180f7767
mov edx, dword [esp + 0x30]
add esp, 0xc
mov ecx, esi
push 1
call fcn.18108950
mov edx, dword [esp + 0x40]
pop ecx
push dword [esp + 0x24]
mov ecx, esi
push 0xffffffffffffffff
call fcn.181088c6
pop ecx
pop ecx
jmp 0x18128fe1
mov ecx, 0x102
mov eax, edx
and eax, ecx
cmp eax, ecx
jne 0x181282ea
push 0x20
pop eax
mov dword [esp + 0x1c], 0xa9
mov ecx, ebx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x10], ebx
mov dword [esp + 0x24], ecx
test al, dl
je 0x181280e6
mov eax, dword [esp + 0x38]
mov dword [esp + 0x18], 4
mov eax, dword [eax + 0x30]
mov ecx, dword [eax]
mov dword [esp + 0x24], ecx
jmp 0x181280ea
mov dword [esp + 0x18], ebx
test dl, 0x10
je 0x18128103
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x18]
mov eax, dword [eax + 0x30]
mov edx, dword [edx + eax]
mov dword [esp + 0x10], edx
jmp 0x18128105
mov edx, ebx
mov eax, dword [esp + 0x48]
test eax, eax
je 0x18128117
mov dword [esp + 0x10], ecx
mov ecx, edx
mov dword [esp + 0x24], ecx
test ecx, ecx
je 0x181281d1
mov edx, dword [ecx]
mov dword [esp + 0x28], 0x1a18191b
mov dword [esp + 0x18], edx
mov ecx, dword [edx + 0x10]
call fcn.18105fc0
cmp eax, 1
jle 0x1812816a
mov ecx, esi
call fcn.1810ac08
mov edx, dword [edx + 0x10]
push 1
push eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x6c], eax
call fcn.18127af9
mov edx, dword [esp + 0x20]
pop ecx
pop ecx
movzx ecx, byte [edx]
inc ecx
and ecx, 2
or ecx, 1
mov cl, byte [esp + ecx + 0x28]
jmp 0x1812819b
lea eax, [esp + 0x2c]
mov edx, ecx
push eax
mov ecx, esi
call fcn.18109a54
mov edx, dword [esp + 0x28]
pop ecx
mov ecx, edi
mov dword [esp + 0x64], eax
call fcn.18127200
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x50], eax
movzx ecx, byte [edx]
mov cl, byte [esp + ecx - 0xe]
push dword [esp + 0x64]
movzx edx, cl
push dword [esp + 0x44]
mov ecx, dword [esp + 0x14]
push dword [esp + 0x44]
call fcn.180f7767
mov edx, dword [esp + 0x70]
add esp, 0xc
mov ecx, esi
push 1
call fcn.18108950
mov edx, dword [esp + 0x54]
pop ecx
mov ecx, esi
call fcn.1810ac27
jmp 0x181281f0
mov ecx, dword [esp + 0xc]
xor eax, 1
push ebx
push dword [esp + 0x30]
push dword [esp + 0x44]
lea edx, [eax*4 + 0x21]
call fcn.180f7767
add esp, 0xc
mov eax, dword [esp + 0x10]
test eax, eax
je 0x1812826a
mov eax, dword [eax]
inc dword [esi + 0x2c]
mov ecx, dword [esi + 0x2c]
push 1
mov edx, dword [eax + 0x10]
mov dword [esp + 0x70], ecx
push ecx
mov ecx, esi
mov dword [esp + 0x34], eax
call fcn.18127af9
mov edx, dword [esp + 0x34]
pop ecx
pop ecx
mov ecx, dword [edx + 0x10]
call fcn.18105fc0
cmp eax, 1
jg 0x18128246
mov al, byte [edx]
cmp al, 0x38
je 0x18128232
cmp al, 0x36
jne 0x18128246
mov eax, dword [esp + 0x48]
xor eax, 1
lea edx, [eax*2 + 0x37]
mov dword [esp + 0x1c], edx
jmp 0x18128255
mov eax, dword [esp + 0x48]
lea eax, [eax*2 + 0x36]
mov dword [esp + 0x1c], eax
call fcn.18105fc0
cmp eax, 1
jg 0x1812826a
mov edx, dword [esp + 0x10]
mov ecx, edi
call fcn.18127200
mov eax, dword [esp + 0xc]
cmp dword [esp + 0x48], ebx
mov ecx, dword [eax + 0x88]
sete al
add al, 6
mov dword [edi + 0x34], ecx
cmp dword [esp + 0x1c], 0xa9
mov byte [edi + 0x2d], al
mov eax, dword [esp + 0x3c]
mov dword [edi + 0x30], eax
je 0x1812901c
inc dword [esi + 0x2c]
mov esi, dword [esi + 0x2c]
mov ecx, dword [esp + 0xc]
push ebx
push esi
push eax
push 0x7d
pop edx
call fcn.180f7767
mov edx, dword [esp + 0x48]
add esp, 0xc
mov ecx, dword [esp + 0x44]
push esi
push 0xffffffffffffffff
call fcn.181088c6
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x14]
push esi
push dword [esp + 0x4c]
push dword [esp + 0x7c]
call fcn.180f7767
mov ecx, dword [esp + 0x20]
add esp, 0x14
push 0x53
pop edx
call fcn.180f7bf4
jmp 0x181289e7
test edx, 0x200
je 0x181289f0
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x60], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x30], ebx
movzx eax, word [ecx + 0x18]
mov dword [esp + 0x1c], eax
movzx eax, word [ecx + 0x1a]
mov dword [esp + 0x10], eax
movzx eax, word [ecx + 0x1c]
mov dword [esp + 0x68], eax
mov eax, dword [ecx + 0x20]
mov ecx, dword [edi + 8]
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x40], ebx
mov byte [esp + 0x23], bl
mov byte [esp + 0x73], bl
test byte [ecx + 0x2c], 1
mov dword [esp + 0x28], eax
je 0x18128360
cmp byte [ecx + 0x2f], bl
mov ecx, dword [esp + 0x1c]
jle 0x18128364
cmp word [eax + 0x32], cx
jbe 0x18128364
mov byte [esp + 0x23], 1
mov dword [esp + 0x30], 1
jmp 0x18128364
mov ecx, dword [esp + 0x1c]
movzx eax, cx
push 0x20
mov dword [esp + 0x18], eax
mov ecx, eax
pop eax
test al, dl
je 0x18128399
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x38]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + ecx*4]
inc ecx
mov dword [esp + 0x60], eax
movzx eax, word [esi + 0x1a]
mov esi, dword [esp + 0x44]
cmp dword [esp + 0x30], eax
ja 0x18128399
mov dword [esp + 0x30], eax
test dl, 0x10
je 0x18128446
mov edx, dword [esp + 0x38]
mov eax, dword [edx + 0x30]
mov ecx, dword [eax + ecx*4]
movzx eax, word [edx + 0x1c]
mov dword [esp + 0x34], ecx
cmp dword [esp + 0x30], eax
ja 0x181283be
mov dword [esp + 0x30], eax
mov eax, 0x100
test word [ecx + 0xa], ax
je 0x18128413
mov eax, dword [esi + 0x2c]
mov ecx, dword [esp + 0xc]
inc eax
push ebx
push eax
push 1
push 0x43
mov dword [esi + 0x2c], eax
pop edx
mov dword [edi + 0x24], eax
call fcn.180f7767
mov eax, dword [esp + 0x18]
xor ecx, ecx
mov edx, dword [esp + 0x20]
add esp, 0xc
mov eax, dword [eax + 0x88]
shl dword [edi + 0x24], 1
mov dword [edi + 0x28], eax
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x1c]
cmp byte [edx + eax], 1
sete cl
xor ecx, dword [esp + 0x48]
or dword [edi + 0x24], ecx
jmp 0x18128417
mov edx, dword [esp + 0x14]
cmp dword [esp + 0x60], ebx
jne 0x18128446
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + 4]
movsx edx, word [eax + edx*2]
test edx, edx
js 0x1812843c
mov eax, dword [ecx + 0xc]
mov ecx, edx
add ecx, ecx
mov eax, dword [eax + 4]
cmp byte [eax + ecx*8 + 0xc], bl
je 0x18128441
cmp edx, 0xfffffffe
jne 0x18128446
mov byte [esp + 0x23], 1
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
movzx eax, word [edx + 0x32]
mov dword [esp + 0x2c], eax
cmp cx, ax
jae 0x1812847c
mov eax, dword [edx + 0x1c]
xor ecx, ecx
mov edx, dword [esp + 0x14]
cmp byte [edx + eax], cl
mov edx, dword [esp + 0x48]
sete cl
cmp edx, ecx
je 0x18128489
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
jmp 0x18128480
mov edx, dword [esp + 0x48]
test edx, edx
je 0x181284bf
cmp ax, cx
jne 0x181284bf
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x68]
mov dword [esp + 0x60], eax
mov al, byte [esp + 0x23]
mov byte [esp + 0x73], al
mov eax, dword [esp + 0x10]
mov dword [esp + 0x34], ecx
movzx ecx, si
mov esi, dword [esp + 0x44]
movzx eax, al
mov byte [esp + 0x23], bl
mov dword [esp + 0x10], ecx
mov dword [esp + 0x68], eax
lea eax, [esp + 0x6c]
mov ecx, esi
push eax
push dword [esp + 0x34]
push edx
mov edx, edi
call fcn.18127802
mov ecx, dword [esp + 0x78]
add esp, 0xc
mov dword [esp + 0x54], eax
test ecx, ecx
je 0x181284fc
cmp word [esp + 0x68], bx
je 0x181284fc
mov edx, dword [esp + 0x14]
lea edx, [edx + ecx]
mov ecx, dword [esp + 0x74]
call fcn.180dff62
mov dword [esp + 0x40], eax
mov eax, dword [edi + 0x10]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x60]
test eax, eax
je 0x1812851a
test byte [eax + 0xc], 0x28
jne 0x1812851a
xor edx, edx
mov dword [esp + 0x5c], ebx
inc edx
jmp 0x18128521
xor edx, edx
inc edx
mov dword [esp + 0x5c], edx
mov ecx, dword [esp + 0x34]
test ecx, ecx
je 0x18128533
test byte [ecx + 0xc], 0x28
mov dword [esp + 0x24], ebx
je 0x18128537
mov dword [esp + 0x24], edx
test eax, eax
jne 0x181286d6
cmp word [esp + 0x1c], bx
jne 0x181286d6
mov ecx, dword [esp + 0x14]
mov edx, ecx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x30], edx
mov al, byte [esp + 0x23]
test al, al
je 0x18128591
mov eax, dword [esp + 0x54]
push ebx
add eax, ecx
mov ecx, dword [esp + 0x10]
push eax
push ebx
push 0x46
pop edx
call fcn.180f7767
mov edx, dword [esp + 0x3c]
add esp, 0xc
mov al, byte [esp + 0x23]
inc edx
mov dword [esp + 0x30], edx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x50], 1
push dword [esp + 0x6c]
movzx eax, al
mov ecx, esi
sub edx, eax
push edx
mov edx, dword [esp + 0x5c]
call fcn.18127264
mov eax, dword [esp + 0x40]
pop ecx
pop ecx
mov ecx, dword [esp + 0x30]
movzx eax, word [eax + 0x2a]
test ax, ax
je 0x181285bd
cmp ecx, eax
je 0x181285ed
mov eax, dword [esp + 0x50]
push ecx
mov ecx, dword [esp + 0x60]
push dword [esp + 0x58]
push dword [esp + 0x6c]
lea eax, [ecx + eax*2]
mov ecx, dword [esp + 0x54]
push dword [esp + 0x64]
movzx edx, byte [ecx + eax*2 + 0x181d27e0]
mov ecx, dword [esp + 0x1c]
call fcn.180f794f
add esp, 0x10
mov eax, dword [esp + 0x34]
test eax, eax
je 0x181287ad
mov eax, dword [eax]
mov ecx, esi
mov edx, dword [esp + 0x14]
add edx, dword [esp + 0x54]
push 1
mov eax, dword [eax + 0x10]
mov dword [esp + 0x60], eax
call fcn.18108950
mov eax, dword [esp + 0x6c]
mov edx, dword [esp + 0x60]
movzx eax, ax
pop ecx
push eax
mov eax, dword [esp + 0x18]
mov ecx, esi
add eax, dword [esp + 0x58]
push eax
call fcn.18127af9
push dword [esp + 0x3c]
mov ecx, dword [esp + 0x18]
mov edx, edi
call fcn.18127a19
mov ecx, dword [esp + 0x68]
add esp, 0xc
call fcn.1810758d
test eax, eax
je 0x1812866c
mov eax, dword [esp + 0x14]
add eax, dword [esp + 0x54]
mov ecx, dword [esp + 0xc]
push ebx
push dword [esp + 0x68]
push eax
push 0x32
pop edx
call fcn.180f7767
add esp, 0xc
mov eax, dword [esp + 0x40]
test eax, eax
je 0x181286a7
mov ecx, dword [esp + 0x5c]
push eax
mov eax, dword [esp + 0x6c]
movzx edx, ax
call fcn.181272bf
mov eax, dword [esp + 0x44]
mov edx, dword [esp + 0x58]
pop ecx
mov ecx, dword [esp + 0x68]
push eax
movzx eax, cx
mov ecx, dword [esp + 0x18]
push eax
lea edx, [ecx + edx]
mov ecx, esi
call fcn.18127264
pop ecx
pop ecx
mov ecx, dword [esp + 0x68]
movzx eax, cx
add dword [esp + 0x14], eax
mov ecx, dword [esp + 0x5c]
call fcn.18105fc0
xor ecx, ecx
inc ecx
cmp eax, ecx
jg 0x181287a7
mov edx, dword [esp + 0x34]
mov ecx, edi
call fcn.18127200
jmp 0x181287e5
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x50], edx
mov edx, ecx
mov dword [esp + 0x30], edx
test eax, eax
je 0x18128558
mov eax, dword [eax]
mov edx, dword [esp + 0x10]
add ecx, dword [esp + 0x54]
mov esi, dword [esp + 0x44]
mov eax, dword [eax + 0x10]
movzx edx, dx
push edx
mov dword [esp + 0x30], ecx
mov edx, eax
push ecx
mov ecx, esi
mov dword [esp + 0x24], eax
call fcn.18127af9
push dword [esp + 0x68]
mov ecx, dword [esp + 0x18]
mov edx, edi
call fcn.18127a19
mov ecx, dword [esp + 0x28]
add esp, 0xc
call fcn.1810758d
test eax, eax
je 0x1812874a
mov ecx, dword [esp + 0xc]
push ebx
push dword [esp + 0x68]
push dword [esp + 0x34]
push 0x32
pop edx
call fcn.180f7767
add esp, 0xc
mov ecx, dword [esp + 0x6c]
test ecx, ecx
je 0x1812876a
mov eax, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0x14]
movzx edx, ax
call fcn.181272bf
pop ecx
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
movzx eax, cx
mov ecx, dword [esp + 0x1c]
add edx, eax
mov dword [esp + 0x30], edx
call fcn.18105fc0
xor ecx, ecx
inc ecx
cmp eax, ecx
jg 0x1812879c
mov edx, dword [esp + 0x60]
mov ecx, edi
call fcn.18127200
mov edx, dword [esp + 0x30]
jmp 0x181287a0
mov dword [esp + 0x5c], ecx
mov al, bl
jmp 0x18128591
mov dword [esp + 0x24], ecx
jmp 0x181287e5
cmp byte [esp + 0x73], bl
je 0x181287e5
mov esi, dword [esp + 0x14]
add esi, dword [esp + 0x54]
mov ecx, dword [esp + 0xc]
push ebx
push esi
push ebx
push 0x46
pop edx
call fcn.180f7767
add esp, 0xc
mov edx, esi
mov esi, dword [esp + 0x44]
mov ecx, esi
push 1
call fcn.18108950
inc dword [esp + 0x18]
pop ecx
mov dword [esp + 0x24], ebx
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x181287f8
mov ecx, dword [esp + 0x74]
mov edx, eax
call fcn.180dfba4
mov eax, dword [esp + 0x40]
test eax, eax
je 0x1812880b
mov ecx, dword [esp + 0x74]
mov edx, eax
call fcn.180dfba4
mov ecx, dword [esp + 0xc]
mov eax, dword [ecx + 0x88]
mov dword [edi + 0x34], eax
mov eax, dword [esp + 0x14]
test eax, eax
je 0x18128845
mov edx, dword [esp + 0x48]
push eax
push dword [esp + 0x58]
mov eax, dword [esp + 0x2c]
push dword [esp + 0x6c]
push dword [esp + 0x64]
movzx edx, byte [eax + edx*2 + 0x181cfde4]
call fcn.180f794f
add esp, 0x10
cmp dword [esp + 0x18], ebx
jne 0x18128982
mov edx, dword [esp + 0x28]
push 0x20
pop eax
mov ecx, dword [edx + 0xc]
test byte [ecx + 0x24], al
jne 0x181288d7
mov ecx, dword [esp + 0x4c]
movzx eax, word [ecx + 0x2c]
test eax, 0x400
jne 0x1812888e
test eax, 0x1000
je 0x1812887a
cmp byte [ecx + 0x31], 1
je 0x1812888e
push dword [esp + 0x58]
push dword [esp + 0x40]
call fcn.18127a4d
pop ecx
pop ecx
jmp 0x18128982
inc dword [esi + 0x2c]
mov edx, 0x85
mov esi, dword [esi + 0x2c]
mov ecx, dword [esp + 0xc]
push ebx
push esi
push dword [esp + 0x60]
call fcn.180f7767
mov edx, dword [esp + 0x48]
add esp, 0xc
mov ecx, dword [esp + 0x44]
push esi
push 0xffffffffffffffff
call fcn.181088c6
mov ecx, dword [esp + 0x14]
push esi
push ebx
push dword [esp + 0x4c]
push 0x20
pop eax
mov edx, eax
call fcn.180f7767
add esp, 0x14
jmp 0x18128982
mov eax, dword [esp + 0x3c]
cmp eax, dword [esp + 0x58]
je 0x18128982
call fcn.1810dd7a
mov ecx, esi
mov dword [esp + 0x84], eax
movzx edx, word [eax + 0x32]
call fcn.1810ac6a
mov dword [esp + 0x50], eax
mov esi, ebx
mov eax, dword [esp + 0x84]
movzx ecx, word [eax + 0x32]
xor eax, eax
mov edx, ecx
cmp ax, cx
jae 0x18128960
mov edi, dword [esp + 0x84]
mov ebx, dword [esp + 0x50]
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x28]
mov dx, word [eax + esi*2]
call fcn.1810dd92
movsx ecx, ax
lea eax, [esi + ebx]
push eax
push ecx
push dword [esp + 0x60]
mov ecx, dword [esp + 0x18]
push 0x63
pop edx
call fcn.180f7767
movzx ecx, word [edi + 0x32]
add esp, 0xc
inc esi
cmp esi, ecx
jl 0x18128921
mov edi, dword [esp + 0x80]
mov edx, ecx
xor ebx, ebx
mov ecx, dword [esp + 0xc]
movzx eax, dx
push eax
push dword [esp + 0x54]
push dword [esp + 0x90]
push dword [esp + 0x48]
push 0x1d
pop edx
call fcn.180f794f
add esp, 0x10
push dword [esp + 0x4c]
mov esi, dword [esp + 0x2c]
mov ecx, esi
push dword [esp + 0x5c]
mov edx, dword [esp + 0x44]
call fcn.18127bba
pop ecx
pop ecx
mov ecx, dword [esp + 0x38]
test dword [ecx + 0x24], 0x1000
je 0x181289ae
mov byte [edi + 0x2d], 0xa9
jmp 0x181289bb
cmp dword [esp + 0x48], 0
sete al
add al, 6
mov byte [edi + 0x2d], al
mov eax, dword [esp + 0x58]
mov dword [edi + 0x30], eax
mov al, byte [ecx + 0x26]
and al, 1
mov byte [edi + 0x2e], al
test byte [ecx + 0x24], 0xf
jne 0x181289d4
mov byte [edi + 0x2f], 1
mov ecx, dword [esp + 0x18]
neg ecx
sbb ecx, ecx
not ecx
and ecx, esi
mov dword [esp + 0x84], ecx
mov esi, dword [esp + 0x44]
jmp 0x1812901c
test edx, 0x2000
je 0x18128fd8
mov eax, dword [esi + 0x28]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x48], eax
inc eax
inc dword [esi + 0x2c]
mov dword [esi + 0x28], eax
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x50], eax
mov dword [esp + 0x34], ebx
mov dword [esp + 0x64], ebx
call fcn.180f79a6
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x2c], ebx
mov edx, dword [ecx + 0x10]
mov dword [esp + 0x30], ebx
mov ecx, dword [eax + 0x30]
mov dword [esp + 0x58], edx
mov eax, dword [ecx]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x1c], eax
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x4c]
mov byte [edi + 0x2d], 0x3f
mov dword [edi + 0x30], ecx
mov al, byte [eax + 0x2e]
cmp al, 1
jbe 0x18128b5f
mov ecx, dword [esp + 0x74]
movzx eax, al
sub eax, dword [esp + 0x24]
dec eax
mov dword [esp + 0x18], eax
imul eax, eax, 0x50
push ebx
add eax, 0x58
push eax
test ecx, ecx
je 0x18128a96
call fcn.180dfde7
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x28], ecx
jmp 0x18128aa3
call fcn.180dfa31
pop ecx
pop ecx
mov ecx, eax
mov dword [esp + 0x28], eax
test ecx, ecx
jne 0x18128ab2
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
jmp 0x18129310
mov al, byte [esp + 0x18]
inc al
movzx eax, al
push 0x50
push dword [esp + 0x14]
mov dword [ecx + 4], eax
mov dword [ecx], eax
lea eax, [ecx + 8]
push eax
call fcn.18161b60
mov ecx, dword [esp + 0x58]
add esp, 0xc
mov ecx, dword [ecx + 4]
add ecx, 8
cmp dword [esp + 0x18], 1
mov dword [esp + 0x10], ecx
jl 0x18128b2b
mov eax, dword [esp + 0x28]
lea esi, [edi + 0x7c]
mov ebx, dword [esp + 0x18]
add eax, 0x58
mov dword [esp + 0x40], eax
mov edi, eax
movzx eax, byte [esi]
imul eax, eax, 0x50
push 0x50
add eax, ecx
push eax
push edi
call fcn.18161b60
mov ecx, dword [esp + 0x1c]
lea esi, [esi + 0x50]
add esp, 0xc
add edi, 0x50
sub ebx, 1
jne 0x18128afb
mov edi, dword [esp + 0x80]
xor ebx, ebx
mov esi, dword [esp + 0x44]
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x4c]
test byte [ecx + 0x2c], 0x10
jne 0x18128bb3
push 0x20
pop eax
test byte [edx + 0x24], al
jne 0x18128b6c
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
mov ecx, dword [esp + 0xc]
push ebx
push eax
push ebx
push 0x46
pop edx
mov dword [esp + 0x40], eax
call fcn.180f7767
add esp, 0xc
jmp 0x18128ba9
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + 4]
mov dword [esp + 0x28], eax
jmp 0x18128b2f
mov ecx, edx
call fcn.1810dd7a
mov esi, eax
mov eax, dword [esp + 0x44]
push ebx
mov edx, dword [eax + 0x28]
mov dword [esp + 0x38], edx
lea ecx, [edx + 1]
mov dword [eax + 0x28], ecx
movzx ecx, word [esi + 0x32]
push ecx
mov ecx, dword [esp + 0x14]
push edx
push 0x6e
pop edx
call fcn.180f7767
add esp, 0xc
mov edx, esi
mov esi, dword [esp + 0x44]
mov ecx, esi
call fcn.180f7e8d
inc dword [esi + 0x2c]
mov eax, dword [esi + 0x2c]
mov dword [esp + 0x64], eax
mov ecx, dword [esp + 0xc]
push ebx
push dword [esp + 0x54]
push ebx
push 0x43
pop edx
call fcn.180f7767
mov dword [esp + 0x88], eax
add esp, 0xc
mov eax, dword [esp + 0x78]
mov edx, ebx
cmp dword [eax + 0xc], 1
jle 0x18128c81
mov edi, dword [esp + 0x1c]
mov ecx, ebx
mov dword [esp + 0x18], edx
mov esi, ebx
mov dword [esp + 0x40], ebx
mov eax, dword [eax + 0x14]
add eax, ecx
cmp eax, edi
je 0x18128c41
mov edi, dword [eax]
mov dword [esp + 0x10], edi
test byte [edi + 4], 1
jne 0x18128c3d
test byte [eax + 0xa], 6
jne 0x18128c3d
mov edi, 0x1fff
test word [eax + 0xc], di
je 0x18128c3d
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x74]
push ebx
push ebx
call fcn.18106a28
mov ecx, dword [esp + 0x7c]
mov edx, esi
push eax
call fcn.181066d0
mov ecx, dword [esp + 0x4c]
add esp, 0xc
mov edx, dword [esp + 0x18]
mov esi, eax
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x78]
inc edx
add ecx, 0x30
mov dword [esp + 0x18], edx
mov dword [esp + 0x40], ecx
cmp edx, dword [eax + 0xc]
jl 0x18128bef
mov edi, dword [esp + 0x80]
mov edx, esi
mov dword [esp + 0x30], esi
mov esi, dword [esp + 0x44]
test edx, edx
je 0x18128c81
push edx
push ebx
mov edx, 0x12c
mov ecx, esi
call fcn.181065d6
pop ecx
mov edx, eax
pop ecx
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x4c]
mov ecx, 0x400
push 0x20
mov dword [esp + 0x44], ebx
mov ax, word [eax + 0x2c]
and ax, cx
pop ecx
or ax, cx
movzx eax, ax
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x6c]
cmp dword [eax + 0xc], ebx
jle 0x18128f50
mov ecx, ebx
mov dword [esp + 0x54], ebx
mov eax, dword [eax + 0x14]
mov edi, dword [esp + 0x3c]
cmp dword [eax + ecx + 0x14], edi
mov edi, dword [esp + 0x80]
je 0x18128cdd
mov esi, 0x400
test word [eax + ecx + 0xc], si
mov esi, dword [esp + 0x44]
je 0x18128f2b
mov eax, dword [eax + ecx]
mov dword [esp + 0x18], ebx
test edx, edx
je 0x18128cf3
test byte [eax + 4], 1
jne 0x18128cf3
mov dword [edx + 0xc], eax
mov eax, edx
push dword [esp + 0x48]
mov edx, dword [esp + 0x2c]
mov ecx, esi
push dword [esp + 0x3c]
push ebx
push ebx
push eax
call fcn.1812ef3e
add esp, 0x14
mov dword [esp + 0x8c], eax
test eax, eax
je 0x18128f27
movzx ecx, byte [edi + 0x2c]
mov edx, dword [esp + 0x28]
push ebx
push ecx
push dword [esp + 0x2c]
lea ecx, [eax + 0x2f0]
push ecx
mov ecx, esi
call fcn.18126f72
mov eax, dword [esp + 0x5c]
add esp, 0x10
test byte [eax + 0x2c], 0x10
jne 0x18128e95
mov eax, dword [esp + 0x6c]
mov ecx, dword [esp + 0x40]
mov eax, dword [eax + 0xc]
dec eax
cmp ecx, eax
jne 0x18128d5f
or dword [esp + 0x10], 0xffffffff
jmp 0x18128d63
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x58]
push 0x20
pop ecx
test byte [eax + 0x24], cl
jne 0x18128da5
push ebx
push dword [esp + 0x68]
mov edx, eax
mov ecx, esi
push dword [esp + 0x44]
push 0xffffffffffffffff
call fcn.18108a5b
push dword [esp + 0x20]
mov ecx, dword [esp + 0x20]
push eax
push ebx
push dword [esp + 0x50]
push 0x2d
pop edx
call fcn.180f794f
add esp, 0x20
mov dword [esp + 0x18], eax
jmp 0x18128e95
mov ecx, eax
call fcn.1810dd7a
mov ecx, esi
mov dword [esp + 0x94], eax
movzx edx, word [eax + 0x32]
mov dword [esp + 0x68], edx
call fcn.1810ac6a
mov dword [esp + 0x60], eax
mov dword [esp + 0x90], ebx
test edx, edx
je 0x18128e0e
mov edi, edx
mov edx, dword [esp + 0x58]
lea ecx, [ebx + eax]
mov eax, dword [esp + 0x94]
push ecx
push dword [esp + 0x40]
mov ecx, esi
mov eax, dword [eax + 4]
movsx eax, word [eax + ebx*2]
push eax
call fcn.18108b10
mov eax, dword [esp + 0x6c]
add esp, 0xc
inc ebx
cmp ebx, edi
jl 0x18128dd3
mov edi, dword [esp + 0x80]
xor ebx, ebx
mov edx, dword [esp + 0x68]
cmp dword [esp + 0x10], 0
je 0x18128e36
mov ecx, dword [esp + 0xc]
push edx
push eax
push ebx
push dword [esp + 0x40]
push 0x1e
pop edx
call fcn.180f794f
add esp, 0x10
mov dword [esp + 0x18], eax
cmp dword [esp + 0x10], 0
jl 0x18128e85
push dword [esp + 0x64]
mov ecx, dword [esp + 0x10]
push dword [esp + 0x6c]
push dword [esp + 0x68]
push 0x65
pop edx
call fcn.180f7767
mov ecx, dword [esp + 0x18]
add esp, 0xc
mov edx, 0x81
push dword [esp + 0x68]
push dword [esp + 0x64]
push dword [esp + 0x6c]
push dword [esp + 0x40]
call fcn.180f794f
add esp, 0x10
cmp dword [esp + 0x10], 0
je 0x18128e85
mov ecx, dword [esp + 0xc]
push 0x10
pop edx
call fcn.180f7bf4
push dword [esp + 0x68]
mov edx, dword [esp + 0x64]
mov ecx, esi
call fcn.1810aca0
pop ecx
mov ecx, dword [esp + 0xc]
push ebx
push dword [esp + 0x18]
push dword [esp + 0x58]
push 0xe
pop edx
call fcn.180f7767
mov eax, dword [esp + 0x24]
add esp, 0xc
test eax, eax
je 0x18128ec9
mov ecx, dword [esp + 0xc]
mov edx, eax
call fcn.180f7ea8
mov ecx, dword [ecx + 0x88]
mov dword [eax + 8], ecx
mov edx, dword [esp + 0x8c]
cmp byte [edx + 0x32], 0
je 0x18128ede
mov dword [esp + 0x2c], 1
mov ecx, dword [edx + 0x330]
test dword [ecx + 0x24], 0x200
je 0x18128f1c
cmp dword [esp + 0x40], 0
je 0x18128efd
mov eax, dword [esp + 0x5c]
cmp dword [ecx + 0x20], eax
jne 0x18128f1c
mov eax, dword [esp + 0x58]
test byte [eax + 0x24], 0x20
je 0x18128f13
mov eax, dword [ecx + 0x20]
mov eax, dword [eax + 0x38]
and al, 3
cmp al, 2
je 0x18128f1c
mov eax, dword [ecx + 0x20]
mov dword [esp + 0x5c], eax
jmp 0x18128f20
mov dword [esp + 0x5c], ebx
mov ecx, edx
call fcn.1812f8ec
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x6c]
add ecx, 0x30
mov eax, dword [esp + 0x40]
inc eax
mov dword [esp + 0x54], ecx
mov dword [esp + 0x40], eax
cmp eax, dword [edx + 0xc]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x6c]
jl 0x18128cb5
mov eax, dword [esp + 0x5c]
mov dword [edi + 0x38], eax
test eax, eax
je 0x18128f62
mov eax, dword [esp + 0x48]
mov dword [edi + 8], eax
mov eax, dword [esp + 0x30]
test eax, eax
je 0x18128f78
mov ecx, dword [esp + 0x74]
mov edx, eax
mov dword [eax + 0xc], ebx
call fcn.181068fb
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0xc]
call fcn.180f7ea8
mov ecx, dword [ecx + 0x88]
mov dword [eax + 4], ecx
mov edx, dword [edi + 0xc]
mov ecx, dword [esp + 0xc]
call fcn.180f77c9
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0xc]
call fcn.180f79e8
mov eax, dword [esp + 0x4c]
cmp byte [eax + 0x2e], 1
jbe 0x18128fc4
mov eax, dword [esp + 0x28]
test eax, eax
je 0x18128fc4
mov ecx, dword [esp + 0x74]
mov edx, eax
call fcn.180dfba4
cmp dword [esp + 0x2c], 0
jne 0x1812901c
mov edx, dword [esp + 0x1c]
mov ecx, edi
call fcn.18127200
jmp 0x1812901c
push 0x20
pop eax
test byte [esp + 0x7c], al
je 0x18128fe7
mov byte [edi + 0x2d], 0xa9
jmp 0x1812901c
mov ecx, dword [esp + 0x48]
push ebx
push dword [esp + 0x30]
mov al, byte [ecx + 0x181d27e8]
movzx edx, byte [ecx + 0x181cfca8]
mov ecx, dword [esp + 0x14]
mov byte [edi + 0x2d], al
mov eax, dword [esp + 0x44]
push eax
mov dword [edi + 0x30], eax
call fcn.180f7767
add esp, 0xc
mov byte [edi + 0x2f], 1
inc eax
mov dword [edi + 0x34], eax
xor ecx, ecx
cmp dword [esp + 0x84], ecx
sete cl
inc ecx
mov dword [esp + 0x18], ecx
mov eax, dword [esp + 0x78]
mov ecx, ebx
mov dword [esp + 0x34], ecx
mov edx, dword [eax + 0x14]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x24], edx
mov dword [esp + 0x14], eax
test eax, eax
jle 0x1812918b
movzx ecx, word [edx + 0xa]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x7c], ecx
test cl, 6
jne 0x18129165
mov ecx, dword [edx + 0x28]
mov eax, dword [edx + 0x2c]
and ecx, dword [edi + 0x48]
and eax, dword [edi + 0x4c]
or ecx, eax
je 0x1812907f
mov eax, dword [esp + 0x4c]
mov byte [eax + 0x32], 1
jmp 0x18129161
mov eax, dword [edx]
mov dword [esp + 0x8c], eax
cmp dword [edi], ebx
je 0x18129096
test byte [eax + 4], 1
je 0x18129161
mov ecx, dword [esp + 0x18]
cmp ecx, 1
jne 0x181290c9
push dword [esp + 0x84]
mov edx, dword [edi + 4]
mov ecx, eax
call fcn.1810a8b3
mov edx, dword [esp + 0x28]
pop ecx
test eax, eax
jne 0x181290ce
mov eax, dword [esp + 0x14]
push 2
pop ecx
mov dword [esp + 0x34], ecx
jmp 0x18129169
cmp ecx, 3
jge 0x181290f2
movzx eax, word [edx + 0xa]
test eax, 0x1000
je 0x181290f6
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x14]
test ecx, ecx
jne 0x18129169
push 3
pop ecx
mov dword [esp + 0x34], ecx
jmp 0x18129169
mov eax, dword [esp + 0x7c]
test eax, 0x200
je 0x18129121
mov edx, dword [edi + 0x24]
test edx, edx
je 0x18129121
mov ecx, dword [esp + 0xc]
mov eax, edx
push ebx
shr eax, 1
and edx, 1
push ebx
push eax
add edx, 0x15
call fcn.180f7767
add esp, 0xc
mov dword [esp + 0x2c], eax
push 0x10
push dword [esp + 0x8c]
push dword [esp + 0x94]
push esi
call fcn.1810a110
mov eax, dword [esp + 0x3c]
add esp, 0x10
test eax, eax
je 0x18129156
mov ecx, dword [esp + 0xc]
mov edx, eax
call fcn.180f7ea8
mov ecx, dword [ecx + 0x88]
mov dword [eax + 8], ecx
mov edx, dword [esp + 0x24]
push 4
pop eax
or word [edx + 0xa], ax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x34]
dec eax
add edx, 0x30
mov dword [esp + 0x14], eax
mov dword [esp + 0x24], edx
test eax, eax
jg 0x1812904d
mov eax, dword [esp + 0x78]
mov edx, dword [eax + 0x14]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], ecx
test ecx, ecx
jg 0x1812902d
test eax, eax
jle 0x18129291
add edx, 0xc
mov dword [esp + 0x10], edx
test byte [edx - 2], 6
jne 0x1812927d
movzx eax, word [edx]
test al, 0x82
push 0xb
pop esi
setne cl
bt ax, si
mov esi, dword [esp + 0x44]
setb al
test al, cl
je 0x18129279
mov ecx, dword [esp + 0x3c]
cmp dword [edx + 8], ecx
jne 0x18129279
cmp dword [edi], ebx
jne 0x18129279
mov eax, dword [edx - 0xc]
push ebx
push 0x83
push dword [ebp + 0xc]
mov dword [esp + 0x88], eax
push dword [ebp + 8]
push dword [edx + 0x10]
mov edx, ecx
mov ecx, dword [esp + 0x8c]
call fcn.1812b324
mov edx, eax
add esp, 0x14
test edx, edx
je 0x18129275
test byte [edx + 0xa], 4
jne 0x18129275
test byte [edx + 0xc], 1
je 0x18129234
mov eax, dword [edx]
test dword [eax + 4], 0x800
je 0x18129234
mov eax, dword [eax + 0x14]
mov eax, dword [eax]
cmp dword [eax], 1
jg 0x18129275
mov esi, dword [edx]
lea edi, [esp + 0x98]
mov eax, dword [esp + 0x7c]
push 0xc
pop ecx
rep movsd dword es:[edi], dword [esi]
mov eax, dword [eax + 0xc]
mov esi, dword [esp + 0x44]
push 0x10
push dword [esp + 0x8c]
mov dword [esp + 0xac], eax
lea eax, [esp + 0xa0]
push eax
push esi
call fcn.1810a110
mov edi, dword [esp + 0x90]
add esp, 0x10
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
dec eax
add edx, 0x30
mov dword [esp + 0x14], eax
mov dword [esp + 0x10], edx
test eax, eax
jg 0x181291a6
cmp dword [edi], 0
je 0x1812930a
mov ecx, dword [esp + 0xc]
push ebx
push dword [edi]
mov eax, dword [ecx + 0x88]
push 1
push 0x43
pop edx
mov dword [edi + 0x1c], eax
call fcn.180f7767
add esp, 0xc
mov ecx, esi
call fcn.18108b45
mov edx, dword [esp + 0x78]
mov esi, dword [edx + 0x14]
cmp dword [edx + 0xc], ebx
jle 0x1812930a
test byte [esi + 0xa], 6
jne 0x18129301
mov ecx, dword [esi + 0x28]
mov eax, dword [esi + 0x2c]
and ecx, dword [edi + 0x48]
and eax, dword [edi + 0x4c]
or ecx, eax
jne 0x18129301
push 0x10
push dword [esp + 0x8c]
push dword [esi]
push dword [esp + 0x50]
call fcn.1810a110
mov edx, dword [esp + 0x88]
add esp, 0x10
push 4
pop eax
or word [esi + 0xa], ax
inc ebx
add esi, 0x30
cmp ebx, dword [edx + 0xc]
jl 0x181292c6
mov eax, dword [edi + 0x48]
mov edx, dword [edi + 0x4c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret