Function at 0x4139e2
Capabilities:
Encode data using xor

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x670
push ebx
mov ebx, dword [ebp + 8]
push esi
xor esi, esi
xor al, al
cmp dword [edi + 0x34694], esi
mov dword [ebp - 0x70], esi
mov byte [ebp - 5], al
mov dword [ebp - 0x88], esi
mov dword [ebp - 0x20], esi
je 0x413a27
mov eax, dword [edi + 0x80]
dec eax
neg eax
sbb eax, eax
and eax, 0x8000ff72
add eax, 0xc000009a
jmp 0x414a18
mov ecx, dword [edi + 0x5c]
cmp ecx, esi
mov dword [ebp - 0x6c], esi
je 0x413a5e
cmp dword [edi + 0x80], 1
jne 0x413a5e
movzx eax, word [ebx + 0x1e]
mov esi, dword [eax + ebx + 0x38]
xor edx, edx
push 8
pop eax
div dword [edi + 0x58]
mov dword [ebp - 0x6c], esi
xor edx, edx
mov dword [ebp - 0x54], eax
mov eax, esi
mov esi, dword [ebp - 0x54]
and eax, 7
div esi
xor esi, esi
movzx eax, al
cmp dword [edi + eax*4 + 0x34124], esi
mov dword [ebp - 0x18], eax
jne 0x413a77
cmp ecx, esi
je 0x413a97
cmp dword [edi + 0x34698], esi
jne 0x413a90
mov eax, dword [ebp - 0x6c]
shr eax, 4
and eax, 0xfff
jmp 0x413a94
movzx eax, word [edi + 0x60]
mov dword [ebp - 0x70], eax
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 4]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x24]
push eax
push ebx
call fcn.0041257c
mov esi, dword [ebp - 4]
and dword [ebp - 0x24], 0xffff
test byte [esi + 6], 5
je 0x413ac2
mov eax, dword [esi + 0xc]
jmp 0x413ad2
push 0x10
xor eax, eax
push eax
push eax
push 1
push eax
push esi
call dword [0xf7530cdc]
test eax, eax
mov ecx, dword [esi + 0x14]
mov dword [ebp - 0x78], ecx
je 0x413a6d
cmp dword [eax], 0xffffffff
jne 0x413aef
cmp word [eax + 4], 0xffff
jne 0x413aef
mov byte [ebp - 0x11], 8
jmp 0x413afd
mov al, byte [eax]
and al, 1
cmp al, 1
sete al
inc al
mov byte [ebp - 0x11], al
mov ecx, dword [edi + 0x64]
test ecx, ecx
mov edx, 0x5ea
je 0x413b21
cmp byte [edi + 0x90], 0x80
sbb eax, eax
and eax, 0x1b58
add eax, 0x7de
mov dword [ebp - 0x3c], eax
jmp 0x413b26
mov dword [ebp - 0x3c], edx
mov eax, edx
cmp byte [edi + 0x6c], 2
je 0x413b45
cmp dword [ebp - 0xc], 6
jb 0x413b3b
cmp dword [ebp - 0xc], eax
jbe 0x413d09
mov eax, 0xc001000f
jmp 0x414a18
test ecx, ecx
movzx eax, word [ebx + 0x1e]
mov esi, dword [eax + ebx + 0x28]
mov dword [ebp - 0x60], esi
jne 0x413b63
cmp dword [ebp - 0xc], edx
jbe 0x413b5d
test esi, esi
je 0x413b3b
cmp dword [ebp - 0xc], 6
jb 0x413b3b
test esi, esi
je 0x413d09
mov eax, dword [ebx + 0x18]
and al, 0xf
cmp al, 2
jne 0x413b3b
lea eax, [ebp - 0x78]
push eax
push 0x8e
lea ebx, [edi + 0x3474c]
push ebx
push 0
push dword [ebp + 8]
mov dword [ebp - 0x88], 1
call fcn.00412642
push 6
push ebx
call 0x4106aa
test eax, eax
mov dword [ebp - 0x68], eax
je 0x413b3b
mov edx, eax
lea eax, [edx + edi + 0x3474c]
movzx ecx, byte [eax]
and ecx, 0xf
shl ecx, 2
mov dword [ebp - 0x7c], eax
add eax, ecx
movzx ebx, byte [eax + 0xc]
shr ebx, 4
shl ebx, 2
mov dword [ebp - 0x1c], ecx
add ecx, ebx
mov dword [ebp - 0x30], ecx
add ecx, edx
mov dword [ebp - 0x58], eax
lea eax, [ecx + esi]
cmp eax, dword [ebp - 0x3c]
mov dword [ebp - 0x5c], ebx
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x38], eax
ja 0x413b3b
mov eax, dword [ebp - 0xc]
sub eax, ecx
xor edx, edx
mov dword [ebp - 0x54], eax
div esi
test edx, edx
mov dword [ebp - 0x28], eax
je 0x413c01
inc eax
mov dword [ebp - 0x28], eax
mov esi, dword [ebp - 0x18]
cmp dword [edi + esi*4 + 0x34124], eax
jb 0x413a6d
mov eax, dword [ebp - 0x54]
xor esi, esi
cmp edx, esi
mov dword [ebp - 0x48], eax
je 0x413c2b
add edx, ecx
cmp edx, 0x3c
jae 0x413c2b
mov dword [ebp - 0x20], 1
cmp byte [edi + 0x90], 0x80
jb 0x413c3b
mov dword [ebp - 0x20], 1
cmp dword [ebp - 0x20], esi
jne 0x414642
cmp dword [edi + 0x8c], esi
jne 0x41423c
mov eax, dword [ebp - 0x18]
mov eax, dword [edi + eax*4 + 0x34104]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x40]
xor esi, esi
cmp eax, esi
mov dword [ebp - 0x10], esi
jbe 0x414143
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x130]
push eax
push 1
push dword [edi + 0x120]
push dword [ebp - 4]
push dword [edi]
call dword [0xf7530c5c]
cmp dword [ebp - 0x50], 0
je 0x414121
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x44]
imul eax, eax, 0x180
lea edx, [eax + ecx]
mov eax, edx
shl eax, 6
add eax, edi
lea ecx, [eax + 0x124]
cmp dword [ecx], 0
jne 0x413cbf
mov dword [ecx], 1
inc dword [eax + 0x128]
mov ecx, dword [ebp - 0x10]
mov eax, edx
mov edx, dword [edi + 0x120]
shl eax, 3
add ecx, eax
mov dword [edi + ecx*8 + 0x12c], edx
mov ecx, dword [ebp - 0x10]
add eax, ecx
mov ecx, dword [ebp - 4]
mov dword [edi + eax*8 + 0x130], ecx
mov ecx, dword [edi + 0x34]
mov eax, dword [edi + 0x120]
dec ecx
cmp eax, ecx
jb 0x4140da
and dword [edi + 0x120], 0
jmp 0x4140e1
mov eax, dword [ebp - 0x18]
mov ecx, dword [edi + eax*4 + 0x34104]
imul eax, eax, 0x180
test ecx, ecx
lea edx, [eax + ecx]
mov esi, dword [edi + edx*4 + 0x1e9b8]
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x38], edx
ja 0x413d33
mov ecx, dword [edi + 0x2c]
dec ecx
add eax, ecx
mov eax, dword [edi + eax*4 + 0x1e9b8]
and word [esi + 4], 0x1000
mov byte [esi + 6], 0x80
cmp dword [edi + 0x5c], 0
mov dword [ebp - 0x54], eax
movzx eax, word [esi + 4]
je 0x413d74
mov ecx, dword [ebp - 0x6c]
shl ecx, 0xd
and eax, 0xffff1000
or eax, ecx
mov ecx, dword [ebp - 0x70]
and ecx, 0xffff0fff
or eax, ecx
mov byte [esi + 6], 0xa0
mov word [esi + 4], ax
or byte [esi + 7], 3
cmp byte [edi + 0x6c], 0
je 0x413dc7
mov eax, dword [ebx + 0x18]
and al, 0xf
cmp al, 2
jne 0x413dc1
movzx eax, word [ebx + 0x1e]
mov ecx, dword [eax + ebx + 0x20]
test cl, 1
je 0x413dc1
mov eax, dword [edi + 0x3472c]
test al, 0x10
je 0x413da7
test cl, 0x10
je 0x413da7
mov byte [ebp - 5], 0x10
test al, 4
je 0x413db4
test cl, 4
je 0x413db4
or byte [ebp - 5], 4
test al, 8
je 0x413dc1
test cl, 8
je 0x413dc1
or byte [ebp - 5], 8
mov al, byte [ebp - 5]
or byte [esi + 6], al
cmp dword [ebp - 0xc], 0x100
jb 0x413fd7
cmp dword [ebp - 0x24], 7
ja 0x413fd7
cmp byte [edi + 0x90], 0x80
jae 0x413fd7
xor eax, eax
cmp dword [edi + 0x8c], eax
xchg dword [eax + eax - 0x7af10000], ecx
js 0x413df8
add byte [eax], al
mov dx, word [esi + 2]
movzx ecx, word [ebx + 0x1e]
xor dx, word [ebp - 0xc]
mov ecx, dword [ecx + ebx + 0x34]
and dx, 0x3fff
xor word [esi + 2], dx
cmp dword [ecx], eax
mov dword [ebp - 4], eax
jbe 0x413fc3
lea edx, [ecx + 8]
lea eax, [esi + 0xe]
mov bx, word [edx + 8]
xor bx, word [eax]
and bx, 0x3fff
xor word [eax], bx
mov ebx, dword [edx]
inc dword [ebp - 4]
mov dword [eax - 6], ebx
mov bx, word [edx + 4]
mov word [eax - 2], bx
mov ebx, dword [ebp - 4]
add edx, 0x10
add eax, 8
cmp ebx, dword [ecx]
jb 0x413f97
mov al, byte [ecx]
mov cl, byte [esi + 7]
inc al
shl al, 4
and cl, 0xf
xor al, cl
jmp 0x414060
mov eax, dword [ebp - 0x38]
imul eax, eax, 0x28
cmp dword [ebp - 0xc], 0x3c
lea ebx, [eax + edi]
mov eax, dword [ebx + 0x2030c]
mov dword [ebp - 0x10], eax
jae 0x413ffc
push 0x3c
push 0
push eax
call 0x419bac
add esp, 0xc
lea eax, [ebp - 0x78]
push eax
push dword [ebp - 0xc]
push dword [ebp - 0x10]
push 0
push dword [ebp + 8]
call fcn.00412642
cmp dword [ebp - 0xc], 0x3c
jae 0x41401d
mov dword [ebp - 0xc], 0x3c
mov cx, word [esi + 2]
mov eax, dword [ebp - 0xc]
and cx, 0xc000
and eax, 0x3fff
or cx, ax
mov word [esi + 2], cx
mov ecx, dword [ebx + 0x20310]
mov dword [esi + 8], ecx
mov cx, word [ebx + 0x20314]
mov word [esi + 0xc], cx
mov cx, word [esi + 0xe]
and cx, 0xc000
or cx, ax
mov al, byte [esi + 7]
and al, 0xf
mov word [esi + 0xe], cx
or al, 0x20
mov byte [esi + 7], al
inc eax
mov dword [edi + 0x120], eax
dec dword [edi + 0x11c]
mov edx, dword [ebp - 0x50]
inc dword [ebp - 0x10]
test edx, edx
jbe 0x414132
lea eax, [ebp - 0x128]
mov ecx, dword [eax]
test ecx, ecx
je 0x414119
mov dword [ebp + esi*4 - 0x670], ecx
mov ecx, dword [eax - 8]
mov dword [ebp + esi*4 - 0x2f0], ecx
mov ecx, dword [eax - 4]
mov dword [ebp + esi*4 - 0x4b0], ecx
inc esi
add eax, 0x10
dec edx
jne 0x4140f7
jmp 0x414132
push dword [edi + 0x120]
push dword [ebp - 4]
push dword [edi]
call dword [0xf7530c4c]
dec dword [ebp - 0x34]
mov eax, dword [ebp - 4]
mov eax, dword [eax]
mov dword [ebp - 4], eax
jne 0x413c70
mov eax, dword [ebp - 0x68]
cmp dword [ebp - 0x670], eax
jne 0x414642
cmp esi, 3
mov eax, dword [ebp - 0x2f0]
mov dword [ebp - 0x84], eax
mov eax, dword [ebp - 0x4b0]
mov dword [ebp - 0x74], eax
mov eax, dword [ebp - 0x66c]
jbe 0x4141a8
cmp eax, dword [ebp - 0x1c]
jne 0x4141a8
cmp dword [ebp - 0x668], ebx
jne 0x4141a8
mov ecx, dword [ebp - 0x2ec]
mov dword [ebp - 0x80], ecx
mov ecx, dword [ebp - 0x4ac]
mov dword [ebp - 0x64], ecx
mov ecx, dword [ebp - 0x2e8]
mov dword [ebp - 0x40], ecx
mov ecx, dword [ebp - 0x4a8]
lea eax, [esi - 3]
mov dword [ebp - 0x20], ecx
jmp 0x4141da
cmp esi, 2
jbe 0x414642
cmp eax, dword [ebp - 0x30]
jne 0x414642
mov ecx, dword [ebp - 0x2ec]
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x4ac]
mov dword [ebp - 0x80], ecx
add ecx, ebx
lea eax, [esi - 2]
mov dword [ebp - 0x64], edx
mov dword [ebp - 0x40], ecx
mov dword [ebp - 0x20], edx
cmp eax, 4
ja 0x414642
sub esi, eax
mov ecx, esi
xor edx, edx
shl ecx, 2
cmp edx, eax
jae 0x414215
mov esi, dword [ebp + ecx - 0x2f0]
mov dword [ebp + edx*4 - 0xb0], esi
mov esi, dword [ebp + ecx - 0x4b0]
mov dword [ebp + edx*4 - 0xc0], esi
mov esi, dword [ebp + ecx - 0x670]
jmp 0x414225
xor esi, esi
mov dword [ebp + edx*4 - 0xb0], esi
mov dword [ebp + edx*4 - 0xc0], esi
mov dword [ebp + edx*4 - 0xa0], esi
inc edx
add ecx, 4
cmp edx, 4
jb 0x4141ec
xor esi, esi
jmp 0x41431b
mov eax, dword [ebp + 8]
movzx ecx, word [eax + 0x1e]
mov eax, dword [ecx + eax + 0x34]
mov ecx, dword [ebp - 0x68]
cmp dword [eax + 0x10], ecx
jne 0x414642
mov ecx, dword [eax + 8]
mov dword [ebp - 0x84], ecx
mov ecx, dword [eax + 0xc]
mov dword [ebp - 0x74], ecx
mov ecx, dword [eax]
cmp ecx, 3
jbe 0x414290
mov edx, dword [eax + 0x20]
cmp edx, dword [ebp - 0x1c]
jne 0x414290
cmp dword [eax + 0x30], ebx
jne 0x414290
mov edx, dword [eax + 0x18]
mov dword [ebp - 0x80], edx
mov edx, dword [eax + 0x1c]
mov dword [ebp - 0x64], edx
mov edx, dword [eax + 0x28]
mov dword [ebp - 0x40], edx
mov edx, dword [eax + 0x2c]
lea ebx, [ecx - 3]
jmp 0x4142c1
cmp ecx, 2
jbe 0x414642
mov edx, dword [ebp - 0x30]
cmp dword [eax + 0x20], edx
jne 0x414642
mov esi, dword [eax + 0x1c]
mov edx, dword [eax + 0x18]
mov dword [ebp - 0x64], esi
mov esi, dword [ebp - 0x1c]
mov dword [ebp - 0x80], edx
add edx, esi
mov dword [ebp - 0x40], edx
mov edx, dword [ebp - 0x64]
lea ebx, [ecx - 2]
xor esi, esi
cmp ebx, 4
mov dword [ebp - 0x20], edx
ja 0x414642
sub ecx, ebx
xor edx, edx
shl ecx, 4
lea eax, [ecx + eax + 0xc]
cmp edx, ebx
jae 0x4142fd
mov ecx, dword [eax - 4]
mov dword [ebp + edx*4 - 0xb0], ecx
mov ecx, dword [eax]
mov dword [ebp + edx*4 - 0xc0], ecx
mov ecx, dword [eax + 4]
mov dword [ebp + edx*4 - 0xa0], ecx
xor esi, esi
jmp 0x414312
mov dword [ebp + edx*4 - 0xb0], esi
mov dword [ebp + edx*4 - 0xc0], esi
mov dword [ebp + edx*4 - 0xa0], esi
inc edx
add eax, 0x10
cmp edx, 4
jb 0x4142d8
cmp dword [ebp - 0x28], esi
mov eax, dword [ebp - 0xa0]
mov dword [ebp - 0x4c], esi
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x30], esi
mov dword [ebp - 4], esi
jbe 0x414900
mov esi, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x68]
mov edx, dword [ebp - 0x28]
and dword [ebp - 0x58], 0
mov ebx, 0x3fff
and ecx, ebx
mov dword [ebp - 0x7c], ecx
mov ecx, dword [ebp - 0x1c]
mov eax, esi
imul eax, eax, 0x180
and ecx, ebx
mov dword [ebp - 0x8c], ecx
mov ecx, dword [ebp - 0x5c]
and ecx, ebx
mov dword [ebp - 0x90], ecx
mov dword [ebp - 0x3c], eax
dec edx
lea ecx, [edi + esi*4 + 0x34104]
jmp 0x41437b
mov edx, dword [ebp - 0x5c]
mov ecx, dword [ecx]
lea esi, [eax + ecx + 0x7a6e]
mov esi, dword [edi + esi*4]
add eax, ecx
imul eax, eax, 0x28
add eax, edi
cmp dword [ebp - 4], edx
mov dword [ebp - 0x34], eax
mov eax, dword [eax + 0x2030c]
mov dword [ebp - 0x44], ecx
mov dword [ebp - 0x10], eax
push 0x3c
je 0x4143b7
pop eax
cmp dword [ebp - 0x38], eax
jbe 0x4143ae
movzx eax, word [ebp - 0x38]
mov dword [ebp - 0xc], eax
movzx eax, word [ebp - 0x60]
jmp 0x4143dd
mov eax, dword [ebp - 4]
imul eax, dword [ebp - 0x60]
sub dword [ebp - 0x48], eax
mov ecx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x24]
add eax, ecx
pop ecx
cmp eax, ecx
jbe 0x4143d6
movzx eax, ax
mov dword [ebp - 0xc], eax
jmp 0x4143d9
mov dword [ebp - 0xc], ecx
movzx eax, word [ebp - 0x48]
mov dword [ebp - 0x1c], eax
mov ax, word [esi + 2]
xor ax, word [ebp - 0xc]
and ax, bx
xor word [esi + 2], ax
mov al, byte [esi + 7]
and al, 0xf
or al, 0x10
mov byte [esi + 7], al
cmp byte [edi + 0x3475a], 0xaa
jne 0x414456
cmp byte [edi + 0x3475b], 0xaa
jne 0x414456
cmp byte [edi + 0x3475c], 3
jne 0x414456
mov eax, dword [ebp - 0xc]
push dword [ebp - 0x68]
add eax, 0xfffffff2
movzx eax, ax
mov dword [ebp - 0x5c], eax
lea eax, [edi + 0x3474c]
push eax
push dword [ebp - 0x10]
call 0x419bb8
mov eax, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x10]
mov byte [ecx + 0xc], ah
mov byte [ecx + 0xd], al
mov eax, dword [ebp - 0x34]
mov ecx, dword [eax + 0x20310]
mov dword [esi + 8], ecx
mov ax, word [eax + 0x20314]
add esp, 0xc
jmp 0x414463
mov eax, dword [ebp - 0x84]
mov dword [esi + 8], eax
mov ax, word [ebp - 0x74]
mov cl, byte [esi + 7]
mov word [esi + 0xc], ax
mov ax, word [esi + 0xe]
and ax, 0xc000
or ax, word [ebp - 0x7c]
mov word [esi + 0xe], ax
mov al, cl
and al, 0xf0
add al, 0x10
and cl, 0xf
xor al, cl
mov ecx, dword [ebp - 0x80]
mov dword [esi + 0x10], ecx
mov cx, word [ebp - 0x64]
mov word [esi + 0x14], cx
mov cx, word [esi + 0x16]
and cx, 0xc000
or cx, word [ebp - 0x8c]
mov word [esi + 0x16], cx
mov cl, al
and al, 0xf
and cl, 0xf0
add cl, 0x10
xor cl, al
mov eax, dword [ebp - 0x40]
mov dword [esi + 0x18], eax
mov ax, word [ebp - 0x20]
mov word [esi + 0x1c], ax
mov ax, word [esi + 0x1e]
and ax, 0xc000
or ax, word [ebp - 0x90]
mov word [esi + 0x1e], ax
mov al, cl
and al, 0xf0
add al, 0x10
and cl, 0xf
xor al, cl
mov byte [esi + 7], al
lea eax, [esi + 0x26]
movzx ecx, word [ebp - 0x1c]
cmp ecx, dword [ebp - 0x2c]
movzx ecx, cx
jb 0x4144f5
movzx ecx, word [ebp - 0x2c]
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x58]
mov edx, dword [ebp + ecx - 0xb0]
mov cx, word [ebp + ecx - 0xc0]
add edx, dword [ebp - 0x30]
mov word [eax - 2], cx
mov cx, word [eax]
xor cx, word [ebp - 0x10]
mov dword [eax - 6], edx
and cx, bx
xor word [eax], cx
mov dl, byte [esi + 7]
mov cl, dl
and cl, 0xf0
and dl, 0xf
add cl, 0x10
xor cl, dl
mov edx, dword [ebp - 0x10]
sub dword [ebp - 0x1c], edx
movzx edx, dx
sub dword [ebp - 0x2c], edx
add dword [ebp - 0x30], edx
xor edx, edx
add eax, 8
cmp word [ebp - 0x1c], dx
mov byte [esi + 7], cl
jbe 0x414571
inc dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x4c]
shl ecx, 2
mov dword [ebp - 0x58], ecx
mov ecx, dword [ebp + ecx - 0xa0]
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x30], edx
mov ebx, 0x3fff
jmp 0x4144e5
and word [esi + 4], 0x1000
movzx eax, word [esi + 4]
mov byte [esi + 6], 0x80
cmp dword [edi + 0x5c], edx
je 0x4145a4
mov ebx, dword [ebp - 0x6c]
shl ebx, 0xd
and eax, 0xffff1000
or eax, ebx
mov ebx, dword [ebp - 0x70]
and ebx, 0xffff0fff
or eax, ebx
mov byte [esi + 6], 0xa0
mov word [esi + 4], ax
cmp dword [edi + 0x64], edx
je 0x4145b5
cmp word [ebp - 0xc], 0x5ea
jbe 0x4145b5
or byte [esi + 6], 2
and cl, 0xfc
cmp dword [ebp - 4], edx
mov byte [esi + 7], cl
jne 0x4145c6
or cl, 2
mov byte [esi + 7], cl
mov eax, dword [ebp - 0x28]
dec eax
cmp dword [ebp - 4], eax
mov dword [ebp - 0x5c], eax
jne 0x4145d6
or byte [esi + 7], 1
cmp eax, edx
jne 0x4145de
or byte [esi + 6], 0x14
mov eax, dword [ebp - 0x3c]
mov bl, byte [ebp - 0x11]
mov ecx, dword [ebp - 0x44]
lea edx, [eax + edi + 0x322f8]
mov byte [ecx + edx], bl
movzx edx, word [esi + 2]
mov ebx, 0x3fff
and edx, ebx
lea ecx, [eax + ecx + 0xca3e]
mov dword [edi + ecx*4], edx
mov ecx, dword [ebp - 0x18]
mov esi, dword [edi + 0x2c]
lea ecx, [edi + ecx*4 + 0x34104]
mov edx, dword [ecx]
dec esi
cmp edx, esi
jb 0x41461f
and dword [ecx], 0
jmp 0x414622
inc edx
mov dword [ecx], edx
mov edx, dword [ebp - 0x18]
lea edx, [edi + edx*4 + 0x34124]
dec dword [edx]
inc dword [ebp - 4]
mov edx, dword [ebp - 4]
cmp edx, dword [ebp - 0x28]
jb 0x414378
jmp 0x414900
mov eax, dword [ebp - 0x7c]
movzx eax, word [eax + 4]
mov esi, dword [ebp - 0x58]
xor ecx, ecx
mov ch, al
xor edx, edx
and dword [ebp - 4], 0
mov cl, ah
mov eax, dword [esi + 4]
mov dh, al
mov dword [ebp - 0x4c], ecx
mov ecx, eax
mov dl, ah
shr ecx, 0x10
movzx eax, ch
shl edx, 0x10
or edx, eax
xor eax, eax
mov ah, cl
movzx eax, ax
or edx, eax
mov al, byte [esi + 0xd]
mov byte [ebp - 5], al
and al, 0xf6
cmp dword [ebp - 0x28], 0
mov dword [ebp - 0x2c], edx
mov byte [esi + 0xd], al
jbe 0x414900
mov ebx, dword [ebp - 0x18]
imul ebx, ebx, 0x180
and dword [ebp - 0x20], 0
mov eax, dword [ebp - 0x18]
lea eax, [edi + eax*4 + 0x34104]
mov eax, dword [eax]
lea ecx, [ebx + eax + 0x7a6e]
mov esi, dword [edi + ecx*4]
mov dword [ebp - 0x44], eax
add eax, ebx
imul eax, eax, 0x28
add eax, edi
mov dword [ebp - 0x34], eax
mov eax, dword [eax + 0x2030c]
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x28]
dec eax
cmp dword [ebp - 4], eax
push 0x3c
je 0x4146e6
pop eax
cmp dword [ebp - 0x38], eax
jbe 0x4146de
movzx eax, word [ebp - 0x38]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x60]
jmp 0x414716
mov eax, dword [ebp - 0x48]
sub eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
add ecx, eax
pop edx
cmp ecx, edx
mov dword [ebp - 0x48], eax
jbe 0x4146fc
movzx edx, cx
cmp ecx, 0x3c
mov dword [ebp - 0xc], edx
jae 0x414716
push 0x3c
push 0
push dword [ebp - 0x10]
call 0x419bac
mov eax, dword [ebp - 0x48]
add esp, 0xc
mov dx, word [esi + 2]
movzx ecx, ax
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebp - 0x30]
add eax, ecx
mov ecx, dword [ebp - 0xc]
and ecx, 0x3fff
and dx, 0xc000
or dx, cx
mov dword [ebp - 0x74], ecx
movzx cx, ah
mov ch, al
mov eax, dword [ebp - 0x7c]
mov word [esi + 2], dx
mov word [eax + 2], cx
mov ecx, dword [ebp - 0x4c]
movzx dx, ch
mov dh, cl
inc dword [ebp - 0x4c]
xor ecx, ecx
mov ch, byte [ebp - 0x2c]
mov word [eax + 4], dx
mov eax, dword [ebp - 0x2c]
shr eax, 0x10
mov cl, byte [ebp - 0x2b]
xor edx, edx
mov dh, al
movzx eax, ah
shl ecx, 0x10
movzx edx, dx
or ecx, edx
or ecx, eax
mov eax, dword [ebp - 0x58]
mov dword [eax + 4], ecx
mov eax, dword [ebp - 0x28]
dec eax
cmp dword [ebp - 4], eax
je 0x414790
mov eax, dword [ebp - 0x60]
add dword [ebp - 0x2c], eax
jmp 0x414799
mov al, byte [ebp - 5]
mov ecx, dword [ebp - 0x58]
mov byte [ecx + 0xd], al
push dword [ebp - 0x24]
lea eax, [edi + 0x3474c]
push eax
push dword [ebp - 0x10]
call 0x419bb8
mov ecx, dword [ebp - 0x10]
add esp, 0xc
lea eax, [ebp - 0x78]
push eax
movzx eax, word [ebp - 0x1c]
push eax
mov eax, dword [ebp - 0x24]
add ecx, eax
push ecx
mov ecx, dword [ebp - 0x20]
add ecx, eax
push ecx
push dword [ebp + 8]
call fcn.00412642
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x18]
and al, 0xf
cmp al, 2
jne 0x4147ee
push 1
push dword [ebp - 0x10]
call 0x410732
push 1
push dword [ebp - 0x10]
call fcn.004107aa
mov ax, word [esi + 2]
and ax, 0xc000
or ax, word [ebp - 0x74]
mov word [esi + 2], ax
cmp byte [edi + 0x3475a], 0xaa
jne 0x41482b
cmp byte [edi + 0x3475b], 0xaa
jne 0x41482b
cmp byte [edi + 0x3475c], 3
jne 0x41482b
mov eax, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x10]
add eax, 0xfffffff2
movzx eax, ax
mov byte [ecx + 0xc], ah
mov byte [ecx + 0xd], al
mov eax, dword [ebp - 0x34]
mov ecx, dword [eax + 0x20310]
mov dword [esi + 8], ecx
mov ax, word [eax + 0x20314]
and word [esi + 4], 0x1000
mov word [esi + 0xc], ax
mov ax, word [esi + 0xe]
and ax, 0xc000
or ax, word [ebp - 0x74]
mov byte [esi + 6], 0x80
mov word [esi + 0xe], ax
cmp dword [edi + 0x5c], 0
movzx eax, word [esi + 4]
je 0x414886
mov ecx, dword [ebp - 0x6c]
shl ecx, 0xd
and eax, 0xffff1000
or eax, ecx
mov ecx, dword [ebp - 0x70]
and ecx, 0xffff0fff
or eax, ecx
mov byte [esi + 6], 0xa0
mov word [esi + 4], ax
cmp dword [edi + 0x64], 0
je 0x414898
cmp word [ebp - 0xc], 0x5ea
jbe 0x414898
or byte [esi + 6], 2
mov al, byte [esi + 7]
mov dl, byte [ebp - 0x11]
and al, 0xc
or al, 0x23
mov byte [esi + 7], al
mov eax, dword [ebp - 0x44]
lea ecx, [ebx + edi + 0x322f8]
mov byte [eax + ecx], dl
movzx ecx, word [esi + 2]
mov edx, dword [ebp - 0x18]
and ecx, 0x3fff
lea eax, [ebx + eax + 0xca3e]
mov dword [edi + eax*4], ecx
mov esi, dword [edi + 0x2c]
lea eax, [edi + edx*4 + 0x34104]
mov ecx, dword [eax]
dec esi
cmp ecx, esi
jb 0x4148df
and dword [eax], 0
jmp 0x4148e2
inc ecx
mov dword [eax], ecx
lea eax, [edi + edx*4 + 0x34124]
dec dword [eax]
mov eax, dword [ebp - 0x60]
inc dword [ebp - 4]
add dword [ebp - 0x20], eax
mov eax, dword [ebp - 4]
cmp eax, dword [ebp - 0x28]
jb 0x41469d
mov eax, dword [ebp - 0x18]
mov ecx, dword [edi + eax*4 + 0x34104]
test ecx, ecx
ja 0x414911
mov ecx, dword [edi + 0x2c]
mov edx, dword [ebp - 0x18]
and dword [ebp - 4], 0
imul edx, edx, 0x180
dec ecx
cmp dword [ebp - 0x28], 0
lea eax, [edx + ecx]
mov eax, dword [edi + eax*4 + 0x1e9b8]
mov dword [ebp - 0x3c], edx
jbe 0x414973
or word [eax + 2], 0x8000
cmp dword [ebp - 4], 0
jne 0x414946
and word [eax + 0xe], 0x7fff
jmp 0x414956
or word [eax + 0xe], 0x8000
cmp dword [edi + 0x74], 0
je 0x414956
and byte [eax + 6], 0x7f
test ecx, ecx
ja 0x41495d
mov ecx, dword [edi + 0x2c]
dec ecx
inc dword [ebp - 4]
mov esi, dword [ebp - 4]
cmp esi, dword [ebp - 0x28]
lea eax, [edx + ecx + 0x7a6e]
mov eax, dword [edi + eax*4]
jb 0x414932
or word [eax + 0xe], 0x8000
mov eax, dword [ebp + 8]
movzx ecx, word [eax + 0x1e]
mov edx, dword [ebp - 0x54]
mov dword [ecx + eax + 0x28], edx
mov edx, dword [ebp - 0x18]
xor ebx, ebx