Function at 0x10403680
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x418
mov eax, dword [0x11ad127c]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x14]
push ebx
mov ebx, ecx
mov dword [ebp - 0x400], eax
mov ecx, dword [ebp + 0x18]
push esi
mov esi, dword [ebp + 8]
cmp byte [ebx + 0x2249], 0
mov dword [ebp - 0x3d4], esi
je 0x104036be
mov byte [ebp - 0x3ce], 0
jmp 0x104036ca
mov al, byte [esi + 0x1b3]
mov byte [ebp - 0x3ce], al
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x404], eax
test al, al
je 0x1040372e
mov eax, dword [ebx + 0x2224]
test ecx, ecx
je 0x10403704
mov dword [ebx + ecx*4 + 0x210c], eax
mov eax, dword [ebx + 0x2228]
mov dword [ebx + ecx*4 + 0x2114], eax
mov al, byte [ebx + 0x2249]
mov byte [ecx + ebx + 0x20d4], al
jmp 0x1040372e
mov dword [ebx + 0x20a8], eax
mov eax, dword [ebx + 0x2228]
mov dword [ebx + 0x20ac], eax
mov eax, dword [ebx + 0x2230]
mov dword [ebx + 0x20b0], eax
mov al, byte [ebx + 0x2249]
mov byte [ebx + 0x20d4], al
mov al, byte [ebx + 0x2220]
mov byte [ebp - 0x3cd], al
test al, al
jne 0x10403743
mov eax, dword [esi + 0x54]
jmp 0x10403749
mov eax, dword [ebx + 0x221c]
mov dword [ebp - 0x3ec], eax
test eax, eax
jne 0x1040376a
pop esi
mov eax, 0x14
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1045066c
mov esp, ebp
pop ebp
ret 0x14
mov ax, word [ebx + 0x18]
dec ax
push edi
mov di, word [ebx + 0x14]
dec di
mov word [ebx + 0x9e], ax
mov word [ebx + 0x9c], di
mov word [ebp - 0x3da], ax
mov eax, dword [esi]
mov word [ebp - 0x3e2], di
mov eax, dword [ebx + eax*4 + 0x2128]
mov eax, dword [eax]
cmp byte [eax + 0x1b4], 0
je 0x104037af
mov eax, dword [eax + 0x1b0]
jmp 0x104037b5
mov eax, dword [eax + 0x74]
mov eax, dword [eax + 0x28]
mov ecx, dword [ebx + 0x1610]
xor edx, edx
movzx eax, ax
div ecx
xor edx, edx
mov word [ebx + 0xa0], ax
mov eax, dword [esi]
mov eax, dword [ebx + eax*4 + 0x2128]
mov eax, dword [eax]
mov eax, dword [eax + 0x74]
movzx eax, word [eax + 0x2c]
div ecx
mov dword [ebx + 0xa8], 0
mov word [ebx + 0xa2], ax
mov eax, dword [esi]
mov ecx, dword [ebx + 0x11c]
mov edx, ecx
and edx, 0x30
mov dword [ebp - 0x3e0], edx
mov eax, dword [ebx + eax*4 + 0x2128]
mov eax, dword [eax]
mov eax, dword [eax + 0x74]
mov eax, dword [eax + 0xf0]
shr eax, 8
mov dword [ebx + 0xac], eax
mov eax, dword [esi]
mov eax, dword [ebx + eax*4 + 0x2128]
mov eax, dword [eax]
mov eax, dword [eax + 0x74]
mov eax, dword [eax + 0xf8]
shr eax, 8
mov dword [ebx + 0xb0], eax
mov eax, dword [esi]
mov eax, dword [ebx + eax*4 + 0x2128]
mov eax, dword [eax]
mov eax, dword [eax + 0x74]
mov eax, dword [eax + 0xfc]
shr eax, 8
mov dword [ebx + 0xb4], eax
mov eax, dword [ebx + 0xb8]
and eax, 0xffffff82
or eax, 2
and eax, 0xffffff7f
mov dword [ebx + 0xb8], eax
cmp edx, 0x30
jne 0x10403889
or eax, 0x300
mov dword [ebx + 0xac], 0
mov dword [ebx + 0xb8], eax
cmp byte [ebp - 0x3ce], 0
movups xmm0, xmmword [ebx + 0x9c]
movups xmmword [ebx + 0xdc], xmm0
movups xmm0, xmmword [ebx + 0xac]
movups xmmword [ebx + 0xec], xmm0
je 0x1040393a
cmp byte [ebp - 0x3cd], 0
mov eax, dword [ebp - 0x3d4]
movzx esi, word [esi + 0x1b4]
movzx edx, word [eax + 0x1b6]
je 0x1040390a
mov ecx, dword [ebx + 0x30]
mov edi, 1
shl edi, cl
mov ecx, dword [ebx + 0x11c]
dec edi
shr esi, 1
shr edx, 1
cmp byte [ebx + 0x2248], 0
je 0x104038fb
mov eax, edi
add esi, edi
not eax
add edx, edi
and esi, eax
and edx, eax
jmp 0x10403903
inc esi
inc edx
and esi, 0xfffffffe
and edx, 0xfffffffe
mov di, word [ebp - 0x3e2]
movups xmm0, xmmword [ebx + 0x9c]
lea eax, [esi - 1]
movups xmmword [ebx + 0xfc], xmm0
movups xmm0, xmmword [ebx + 0xac]
movups xmmword [ebx + 0x10c], xmm0
mov word [ebx + 0xfc], ax
lea eax, [edx - 1]
mov word [ebx + 0xfe], ax
mov ax, word [ebp - 0x3da]
and ecx, 0x7800
mov word [ebx + 0xbc], di
mov edi, dword [ebp - 0x3ec]
mov word [ebx + 0xbe], ax
mov dword [ebp - 0x3d8], ecx
mov eax, dword [edi]
cmp byte [eax + 0x1b4], 0
je 0x10403974
mov eax, dword [eax + 0x1b0]
jmp 0x1040397a
mov eax, dword [eax + 0x74]
mov eax, dword [eax + 0x28]
xor ecx, ecx
movzx eax, ax
cmp dword [ebp - 0x3d8], ecx
setne cl
xor edx, edx
inc ecx
div ecx
movzx esi, ax
mov word [ebx + 0xc0], si
mov eax, dword [edi]
cmp byte [eax + 0x1b4], 0
je 0x104039aa
mov eax, dword [eax + 0x1b0]
jmp 0x104039b0
mov eax, dword [eax + 0x74]
mov eax, dword [eax + 0x28]
movzx eax, ax
xor edx, edx
div ecx
mov ecx, dword [ebx + 0xd8]
mov word [ebx + 0xc2], ax
and ecx, 0xfffffcff
mov dword [ebx + 0xc8], 0
mov dword [ebx + 0xcc], 0
mov eax, dword [edi]
mov eax, dword [eax + 0x74]
mov eax, dword [eax + 0xf8]
shr eax, 8
mov dword [ebx + 0xd0], eax
mov dword [ebx + 0xd4], 0
mov dword [ebx + 0xd8], ecx
mov eax, dword [edi]
mov eax, dword [eax + 0x74]
cmp byte [eax + 0xbd], 0
je 0x10403a1e
and ecx, 0xffffff82
or ecx, 2
and ecx, 0xffffff7f
jmp 0x10403a3b
and ecx, 0xffffff80
mov dword [ebx + 0xd8], ecx
mov eax, dword [edi]
mov eax, dword [eax + 0x74]
cmp byte [eax + 0xbc], 0
je 0x10403a41
or ecx, 0x80
mov dword [ebx + 0xd8], ecx
cmp dword [ebp - 0x3e0], 0x30
jne 0x10403a60
or ecx, 0x300
lea eax, [esi + esi]
mov dword [ebx + 0xd8], ecx
mov word [ebx + 0xc2], ax
mov eax, dword [ebx + 0x3c0]
lea esi, [ebx + 0x120]
mov edi, dword [ebp - 0x3d4]
and eax, 0xffffc03c
or eax, 0x3c
mov dword [ebx + 0x3bc], 0xcccccc80
mov dword [ebx + 0x3c0], eax
lea eax, [edi + 0x13c]
test esi, esi
je 0x10403ac5
test eax, eax
je 0x10403ab8
movups xmm0, xmmword [eax]
movups xmmword [esi], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [esi + 0x10], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [esi + 0x20], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [esi + 0x30], xmm0
jmp 0x10403ad5
push 0x40
push 0
push esi
call fcn.10425c00
add esp, 0xc
call fcn.1043a2d6
mov dword [eax], 0x16
call fcn.1043a1d8
lea eax, [ebx + 0x1c0]
lea edx, [edi + 0xcc]
test eax, eax
je 0x10403b0f
test edx, edx
je 0x10403b02
mov ecx, 0x1c
mov esi, edx
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov edi, dword [ebp - 0x3d4]
lea esi, [ebx + 0x120]
jmp 0x10403b1f
push 0x70
push 0
push eax
call fcn.10425c00
add esp, 0xc
call fcn.1043a2d6
mov dword [eax], 0x16
call fcn.1043a1d8
cmp byte [ebx + 0x218], 0
jne 0x10403b38
push edi
mov ecx, ebx
call fcn.10407180
test eax, eax
jne 0x10405187
cmp byte [ebx + 0x2249], 0
je 0x10403b75
mov ecx, dword [esi]
test cl, 3
je 0x10403b75
or dword [ebx + 0x1f8], 3
and dword [ebx + 0x1dc], 0xfffff81f
and dword [ebx + 0x124], 0xfffffbff
and ecx, 0xf8fffefc
mov dword [ebx + 0x1e4], 0x3000
mov dword [esi], ecx
mov al, byte [ebx + 0x218]
lea edx, [ebx + 0x4c]
movzx ecx, al
mov byte [ebp - 0x3cd], al
movzx eax, word [ebx + ecx*4 + 0x70]
lea edx, [edx + ecx*4]
mov word [ebx + 0x21a], ax
movzx eax, word [ebx + ecx*4 + 0x64]
mov word [ebx + 0x21c], ax
lea eax, [ebx + 0x88]
lea eax, [eax + ecx*4]
mov dword [ebp - 0x3d8], edx
mov dword [ebp - 0x3f8], eax
movzx eax, word [eax]
mov word [ebx + 0x21e], ax
lea eax, [ebx + 0x7c]
lea eax, [eax + ecx*4]
mov dword [ebp - 0x3fc], eax
movzx eax, word [eax]
mov word [ebx + 0x220], ax
mov eax, dword [ebx + ecx*4 + 0x40]
shl eax, 0xb
xor eax, dword [ebx + 0x1dc]
and eax, 0x7f800
xor eax, dword [ebx + 0x1dc]
mov dword [ebx + 0x1dc], eax
mov edx, dword [edx]
dec edx
shl edx, 0x13
xor edx, eax
and edx, 0x7f80000
xor edx, eax
mov dword [ebx + 0x1dc], edx
mov edi, dword [ebx + ecx*4 + 0x58]
mov dword [ebp - 0x3e0], edx
test edi, edi
jne 0x10403c22
mov edi, dword [ebx + 0x1f8]
shr edi, 0xf
mov eax, dword [ebp - 0x3d8]
mov esi, 1
shl edi, 0xf
xor edi, dword [ebx + 0x1f8]
and edi, 0x7f8000
xor edi, dword [ebx + 0x1f8]
mov ecx, edi
mov dword [ebx + 0x1f8], edi
mov eax, dword [eax]
shr ecx, 0xf
movzx ecx, cl
cmp ecx, esi
cmova esi, ecx
xor edx, edx
div esi
mov cl, byte [ebp - 0x3cd]
xor dl, dl
shl eax, 7
xor eax, edi
and eax, 0x7f80
xor eax, edi
cmp dl, cl
sbb edi, edi
and eax, 0x807fffff
and edi, 0x7f800000
or edi, eax
mov dword [ebx + 0x1f8], edi
test cl, cl
je 0x10403c8e
xor ecx, ecx
jmp 0x10403c9a
mov ecx, dword [ebx + 0x120]
and ecx, 0x200
mov eax, dword [ebx + 0x120]
mov edx, dword [ebp - 0x3e0]
and eax, 0xfffffdff
or eax, ecx
mov dword [ebx + 0x120], eax
mov al, byte [ebx + 0x3c]
dec al
movzx ecx, al
mov eax, dword [ebx + 0x1e0]
shl ecx, 4
and eax, 0xfffff00f
or ecx, eax
mov eax, dword [ebp - 0x3d4]
mov dword [ebx + 0x1e0], ecx
mov dword [ebp - 0x3d8], ecx
mov ecx, edx
shr ecx, 5
and ecx, 7
cmp ecx, dword [eax + 0x10]
cmovae ecx, dword [eax + 0x10]
shl ecx, 5
xor ecx, edx
and ecx, 0xe0
xor ecx, edx
mov esi, ecx
mov dword [ebx + 0x1dc], ecx
shr esi, 8
and esi, 7
cmp esi, dword [eax + 0x14]
cmovae esi, dword [eax + 0x14]
xor edx, edx
mov eax, dword [ebx + 0x21d4]
and edi, 0x7fffffff
shl esi, 8
xor esi, ecx
mov dword [ebx + 0x1d8], 0
and esi, 0x700
xor esi, ecx
movzx ecx, byte [ebx + 0x219]
mov dword [ebx + 0x1dc], esi
mov eax, dword [eax + 0x74]
mov eax, dword [eax + 0x24]
mov dword [ebx + 0x1ec], eax
mov eax, dword [ebx + 0x2254]
div ecx
mov dword [ebx + 0x1f4], 0
and eax, 0xffffff00
mov dword [ebx + 0x214], 0
cmp dword [ebx + 0x10], 0
mov dword [ebx + 0x1f0], eax
mov dword [ebx + 0x1fc], 0
mov dword [ebx + 0x1f8], edi
je 0x10403d90
mov eax, 2
jmp 0x10403d9b
xor eax, eax
cmp byte [ebx + 0x227c], al
setne al
mov ecx, dword [ebp - 0x3d8]
shl eax, 0x14
and ecx, 0xffcfffff
or eax, ecx
mov dword [ebx + 0x1e0], eax
test eax, 0x300000
je 0x10403dc4
and eax, 0xfff9ffff
mov dword [ebx + 0x1e0], eax
shr esi, 5
and esi, 7
cmp esi, 4
jae 0x10403df0
lea eax, [ebx + 0x1ce]
mov ecx, 4
add eax, esi
sub ecx, esi
nop
mov byte [eax - 0xe], 0xff
lea eax, [eax + 1]
mov byte [eax - 1], 0xff
sub ecx, 1
jne 0x10403de0
mov edx, dword [ebx + 0x1dc]
shr edx, 8
and edx, 7
cmp edx, 3
jae 0x10403e20
lea eax, [ebx + 0x1d2]
mov ecx, 3
add eax, edx
sub ecx, edx
mov byte [eax - 0xe], 0xff
lea eax, [eax + 1]
mov byte [eax - 1], 0xff
sub ecx, 1
jne 0x10403e10
mov eax, dword [ebx + 0x1dc]
and eax, 0xe0
cmp eax, 0x20
jbe 0x10403e3e
mov ecx, dword [ebx + 0x124]
and ecx, 0x400
jmp 0x10403e40
xor ecx, ecx
mov eax, dword [ebx + 0x124]
lea esi, [ebx + 0x160]
and eax, 0xfffffbff
or eax, ecx
mov dword [ebx + 0x124], eax
mov eax, dword [ebp - 0x3d4]
add eax, 0x6c
test esi, esi
je 0x10403ea7
test eax, eax
je 0x10403e9a
movups xmm0, xmmword [eax]
movups xmmword [esi], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [esi + 0x10], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [esi + 0x20], xmm0
movups xmm0, xmmword [eax + 0x30]
movups xmmword [esi + 0x30], xmm0
movups xmm0, xmmword [eax + 0x40]
movups xmmword [esi + 0x40], xmm0
movups xmm0, xmmword [eax + 0x50]
movups xmmword [esi + 0x50], xmm0
jmp 0x10403eb7
push 0x60
push 0
push esi
call fcn.10425c00
add esp, 0xc
call fcn.1043a2d6
mov dword [eax], 0x16
call fcn.1043a1d8
cmp byte [ebx + 0x2220], 0
je 0x10403ee7
shr dword [ebx + 0x17c], 2
mov al, 0x21
shr dword [ebx + 0x180], 2
shr dword [ebx + 0x184], 2
shr dword [ebx + 0x188], 2
shr dword [ebx + 0x18c], 2
jmp 0x10403ee9
xor al, al
mov byte [ebx + 0x1ac], al
mov ecx, dword [ebx + 8]
mov eax, dword [ebx + 0x10]
cmp eax, dword [ecx + 0x68cc]
jne 0x10403f0a
cmp byte [ebx + 0x227c], 0
jne 0x10403f0a
mov al, 1
jmp 0x10403f0c
xor al, al
mov edi, dword [ebx + 0x11c]
mov ecx, edi
mov byte [ebx + 0x1aa], al
shr ecx, 2
and ecx, 3
mov byte [esi], 0
add ecx, 3
mov esi, 1
shl esi, cl
mov ecx, edi
mov eax, esi
mov dword [ebp - 0x3f4], esi
cdq
and ecx, 0x30
sub eax, edx
mov edx, esi
sar eax, 1
cmp cl, 0x30
mov ecx, dword [ebp - 0x3fc]
cmovne edx, eax
movzx esi, word [ebx + 0xa0]
movzx eax, word [ebx + 0xa2]
and edi, 0x780
neg edi
mov dword [ebp - 0x3e8], edx
mov edx, dword [ebp - 0x3f8]
sbb edi, edi
imul eax, dword [ecx]
imul esi, dword [ecx]
neg edi
inc edi
add eax, dword [edx]
add esi, dword [edx]
imul eax, dword [ebp - 0x3e8]
imul esi, edi
imul eax, edi
imul esi, dword [ebp - 0x3f4]
mov edi, dword [ebx + 0x11c]
and edi, 0x7800
shr eax, 8
add dword [ebx + 0xf0], eax
add dword [ebx + 0xf4], eax
mov eax, ecx
movzx ecx, word [ebx + 0xc0]
shr esi, 8
add dword [ebx + 0xe8], esi
add dword [ebx + 0xec], esi
neg edi
mov edx, dword [eax]
mov eax, dword [ebp - 0x3f8]
sbb edi, edi
imul ecx, edx
neg edi
inc edi
mov dword [ebp - 0x3f0], edi
mov esi, dword [eax]
movzx eax, word [ebx + 0xc2]
imul eax, edx
add ecx, esi
imul ecx, edi
add eax, esi
lea esi, [ebx + 0x498]
imul eax, dword [ebp - 0x3e8]
imul ecx, dword [ebp - 0x3f4]
imul eax, edi
shr ecx, 8
add dword [ebx + 0xc8], ecx
add dword [ebx + 0xcc], ecx
shr eax, 8
add dword [ebx + 0xd0], eax
add dword [ebx + 0xd4], eax
lea eax, [ebx + 0x250]
test eax, eax
je 0x1040404e
test esi, esi
je 0x1040403e
mov ecx, 0x29
mov edi, eax
rep movsd dword es:[edi], dword [esi]
jmp 0x1040405e
push 0xa4
push 0
push eax
call fcn.10425c00
add esp, 0xc
call fcn.1043a2d6
mov dword [eax], 0x16
call fcn.1043a1d8
lea eax, [ebx + 0x2f4]
lea esi, [ebx + 0x53c]
test eax, eax
je 0x1040408d
test esi, esi
je 0x1040407d
mov ecx, 0x30
mov edi, eax
rep movsd dword es:[edi], dword [esi]
jmp 0x1040409d
push 0xc0
push 0
push eax
call fcn.10425c00
add esp, 0xc
call fcn.1043a2d6
mov dword [eax], 0x16
call fcn.1043a1d8
mov eax, dword [ebp - 0x3d4]
mov esi, dword [eax + 0x1c0]
test esi, esi
je 0x104040d6
lea edi, [ebx + 0x250]
test edi, edi
jne 0x104040cf
call fcn.1043a2d6
mov dword [eax], 0x16
call fcn.1043a1d8
mov eax, dword [ebp - 0x3d4]
jmp 0x104040d6
mov ecx, 0x29
rep movsd dword es:[edi], dword [esi]
mov esi, dword [eax + 0x1c4]
test esi, esi
je 0x1040412d
lea edi, [ebx + 0x2f4]
test edi, edi
jne 0x104040fc
call fcn.1043a2d6
mov dword [eax], 0x16
call fcn.1043a1d8
jmp 0x10404103
mov ecx, 0x30
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebx + 0x10]
mov eax, dword [ebx + 0x384]
neg ecx
sbb ecx, ecx
and eax, 0xfffffdff
and ecx, 0x200
or ecx, eax
and dword [ebx + 0x308], 0xffdfffff
mov dword [ebx + 0x384], ecx
test dword [ebx + 0x1e0], 0x40000
movzx eax, byte [ebx + 0x2ec]
je 0x10404188
mov edx, 0x40
cmp eax, edx
cmova eax, edx
mov byte [ebx + 0x2f0], al
mov al, byte [ebx + 0x2ed]
cmp al, dl
movzx ecx, al
mov al, byte [ebx + 0x2ee]
cmova ecx, edx
cmp al, dl
mov byte [ebx + 0x2f1], cl
movzx ecx, al
mov al, byte [ebx + 0x2ef]
cmovb ecx, edx
mov byte [ebx + 0x2f2], cl
cmp al, dl
movzx ecx, al
cmovb ecx, edx
jmp 0x104041ac
mov cl, byte [ebx + 0x2ef]
mov byte [ebx + 0x2f0], al
mov al, byte [ebx + 0x2ed]
mov byte [ebx + 0x2f1], al
mov al, byte [ebx + 0x2ee]
mov byte [ebx + 0x2f2], al
cmp byte [ebp - 0x3ce], 0
mov byte [ebx + 0x2f3], cl
je 0x1040425d
movzx esi, word [ebx + 0x9c]
xor edx, edx
movzx eax, word [ebx + 0xfc]
inc esi
inc eax
movzx edi, word [ebx + 0x9e]
shl eax, 0xe
mov ecx, esi
shr ecx, 1
inc edi
add eax, ecx
or dword [ebx + 0x390], 0x2000000
div esi
mov ecx, edi
xor edx, edx
movzx esi, ax
movzx eax, word [ebx + 0xfe]
inc eax
shr ecx, 1
shl eax, 0xe
add eax, ecx
mov word [ebx + 0x394], si
div edi
movzx ecx, ax
lea eax, [esi + 8]
shr eax, 4
mov word [ebx + 0x398], ax
mov word [ebx + 0x396], cx
lea eax, [ecx + 8]
shr eax, 4
mov word [ebx + 0x39a], ax
mov eax, 1
mov word [ebx + 0x2e8], ax
mov eax, dword [ebx + 0x38c]
and eax, 0xb111ffff
or eax, 0x31110000
and dword [ebx + 0x384], 0xfffffdff
mov dword [ebx + 0x38c], eax
movzx eax, word [ebx + 0xde]
mov ecx, dword [ebx + 8]
inc eax
or dword [ebx + 0x3b4], 0x80000000
push 1
push eax
movzx eax, word [ebx + 0xdc]
inc eax
push eax
call fcn.103e5870
mov ecx, dword [ebx + 0x3b4]
mov esi, dword [ebx + 0x2224]
xor ecx, eax
and ecx, 0x7fffffff
and esi, 0xf
xor dword [ebx + 0x3b4], ecx
cmp byte [ebx + 0x218], 0
jne 0x104042c9
push dword [ebx + 0x2278]
mov ecx, dword [ebx + 8]
lea eax, [ebx + 0x21d8]
lea eax, [eax + esi*4]
push eax
call fcn.103e5830
test eax, eax
jne 0x10405187
mov ecx, dword [ebx]
add esi, 0x876
push 0
push 0
push 0
push 0
lea edi, [ebx + esi*4]
push 0
push dword [edi]
mov dword [ebp - 0x40c], edi
call fcn.1033bbe0
mov esi, eax
mov dword [ebp - 0x3d8], esi
test esi, esi
jne 0x1040430d
pop edi
lea eax, [esi + 0x10]
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1045066c
mov esp, ebp
pop ebp
ret 0x14
mov edx, dword [edi]
movzx ecx, byte [ebx + 0x218]
shl ecx, 0xa
mov eax, dword [edx + 0x74]
mov edi, dword [eax + 0x24]
lea eax, [ecx + 0x400]
cmp eax, edi
ja 0x1040517b
cmp dword [ebx + 0x2278], edi
ja 0x1040517b
lea eax, [ecx + esi]
lea edx, [ebx + 0x98]
test eax, eax
je 0x1040436d
test edx, edx
je 0x1040435d
mov ecx, 0x100
mov esi, edx
mov edi, eax
rep movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x3d8]
jmp 0x1040437d
push 0x400
push 0
push eax
call fcn.10425c00
add esp, 0xc
call fcn.1043a2d6
mov dword [eax], 0x16
call fcn.1043a1d8
cmp byte [ebx + 0x218], 0
jne 0x104043c6
mov eax, dword [ebx + 0x2270]
lea ecx, [ebx + 0x5fc]
add eax, esi
je 0x104043b6
push 0x1000
test ecx, ecx
je 0x104043ab
push ecx
push eax
call fcn.10425d60
add esp, 0xc
jmp 0x104043c6
push 0
push eax
call fcn.10425c00
add esp, 0xc
call fcn.1043a2d6
mov dword [eax], 0x16
call fcn.1043a1d8
mov ecx, dword [ebp - 0x40c]
mov ecx, dword [ecx]
call fcn.102ac650
cmp byte [ebx + 0x2220], 0
je 0x10404699
movzx ecx, byte [ebx + 0x219]
movzx eax, byte [ebx + 0x218]
dec ecx
cmp eax, ecx
jne 0x10404699
cmp dword [ebx + 0x2280], 0
je 0x104044da
mov esi, dword [ebx + 0x11c]
mov ecx, dword [ebx + 0x2294]
mov edi, dword [ebx + 0x2288]
shr esi, 4
and esi, 3
cmp esi, 1
jne 0x10404428
lea eax, [edi + 1]
shr eax, 1
jmp 0x1040442a
mov eax, edi
mov edx, dword [ebx + 0x2284]
inc edx
and edx, 0xfffffffe
imul edx, eax
mov eax, dword [ebx + 0x2284]
imul eax, edi
add edx, eax
mov eax, dword [ebx + 0x1f8]
imul edx, dword [ebx + 0x1610]
and eax, 3
jne 0x10404466
mov ecx, dword [ebx + 0x94]
inc ecx
imul ecx, edx
add ecx, dword [ebx + 0x2294]
jmp 0x1040449b
cmp eax, 1
jne 0x104044a5
mov eax, dword [ebx + 0x2298]
mov ecx, edx
inc eax
imul ecx, eax
mov dword [ebx + 0x2298], eax
add ecx, dword [ebx + 0x2294]
cmp eax, dword [ebx + 0x94]
jne 0x104044a5
mov eax, dword [ebx + 0x94]
inc eax
imul eax, edx
add dword [ebx + 0x2294], eax
mov dword [ebx + 0x2298], 0
or eax, 0xffffffff
cmp dword [ebx + 0x94], 0
cmova eax, ecx
mov ecx, dword [ebx + 8]
push eax
push dword [ebp - 0x3f0]
push esi
push edi
push dword [ebx + 0x2284]
push dword [ebx + 0x2280]
push dword [ebp - 0x3ec]
call fcn.103e6560
jmp 0x10404605
mov edx, dword [ebp - 0x3d4]
cmp byte [edx + 0x1bc], 0
jne 0x10404605
cmp byte [ebx + 0x2245], 0
jne 0x104045cf
mov ecx, dword [ebx + 8]
mov eax, dword [ebx + 0x10]
cmp eax, dword [ecx + 0x68cc]
jne 0x104045cf
cmp byte [ebx + 0x227c], 0
jne 0x104045cf
cmp byte [ebp - 0x3ce], 0
jne 0x104045cf
cmp byte [ebx + 0x2249], 0
jne 0x104045cf
mov eax, dword [ebx + 4]
mov byte [eax + 0xb0], 1
mov eax, dword [edx + 0xc]
test eax, eax
js 0x104045cf
mov ecx, dword [edx + eax*4 + 0x18c]
mov dword [ebp - 0x3e0], ecx
test ecx, ecx
je 0x104045cf
mov eax, dword [ebx + eax*4 + 0x2128]
mov dword [ebp - 0x3d8], eax
test eax, eax
je 0x104045cf
mov eax, dword [ebx + 0x14]
mov ecx, dword [ebx]
push 0
push 0
push 0
push 0
push 0
push 0
push 0
lea edi, [eax*2 + 0xf]
mov eax, dword [ebx + 0x18]
push 0
push 1
push dword [ebp - 0x3ec]
lea esi, [eax*2 + 0xf]
and edi, 0xfffffff0
and esi, 0xfffffff0
call fcn.1033bb90
mov ecx, dword [ebx + 4]
push eax
mov eax, dword [ebx + 8]
push 1
sar esi, 1
sar edi, 1
push dword [eax + 0x428]
push esi
push edi
push dword [ebp - 0x3d8]
push dword [ebp - 0x3e0]
call fcn.10300e00
mov edx, dword [ebp - 0x3d4]
mov eax, dword [ebx + 8]
push 0
push 0
push 0
push 0
push 0
push 0
push 0
mov ecx, dword [ebx + 4]
push 0
push 1
push 0
push 0
push dword [eax + 0x428]
push dword [ebx + 0x18]
push dword [ebx + 0x14]
push dword [ebp - 0x3ec]
push dword [edx + 0x54]
call fcn.10300e00
cmp byte [ebp - 0x3ce], 0
je 0x10404699
cmp byte [ebx + 0x2220], 0
je 0x10404699
mov ecx, dword [ebx + 0x2150]
mov dword [ebp - 0x3e0], ecx
test ecx, ecx
je 0x10404699
mov eax, dword [ebx + 0x214c]
mov dword [ebp - 0x3d8], eax
test eax, eax
je 0x10404699
mov eax, dword [ebx + 0x14]
push 0
push 0
push 0
push 0
push 0
push 0
push 0
lea edi, [eax*2 + 0xf]
mov eax, dword [ebx + 0x18]
push 0
push 1
push ecx
mov ecx, dword [ebx]
lea esi, [eax*2 + 0xf]
and edi, 0xfffffff0
and esi, 0xfffffff0
call fcn.1033bb90
mov ecx, dword [ebx + 4]
push eax
mov eax, dword [ebx + 8]
push 1
sar esi, 1
sar edi, 1
push dword [eax + 0x428]
push esi
push edi
push dword [ebp - 0x3d8]
push dword [ebp - 0x3e0]
call fcn.10300e00
cmp dword [ebx + 0x10], 0
mov esi, dword [ebp - 0x400]
mov edi, dword [ebp - 0x3d4]
je 0x104046ce
cmp dword [ebx + 0xc], 0
je 0x104046ce
push dword [ebp + 0x18]
mov ecx, ebx
push esi
push dword [ebp - 0x404]
push dword [ebp + 0xc]
push edi
call fcn.104065e0
test eax, eax
jne 0x10405187
mov dl, byte [ebx + 0x219]
movzx eax, byte [ebx + 0x218]
movzx ecx, dl
dec ecx
mov byte [ebp - 0x3cd], dl
cmp eax, ecx
jne 0x10405166
mov byte [ebp - 0x3d9], 0
mov ecx, 0x872
test dl, dl
je 0x1040502c
lea eax, [ebx + 0x227c]
mov dword [ebp - 0x3f8], eax
mov dword [ebp - 0x3f4], eax
lea eax, [ebx + 0x224c]
mov dword [ebp - 0x3e0], eax
mov dword [ebp - 0x410], eax
lea eax, [ebx + 0x2221]
mov dword [ebp - 0x3f0], eax
mov dword [ebp - 0x408], eax
lea eax, [ebx + 4]
nop word [eax + eax]
mov dword [ebp - 0x3d8], eax
cmp dl, 1
jbe 0x10404764
mov ecx, dword [eax]
push 0
push 0
push 0
call fcn.102fe560
mov al, byte [ebx + 0x219]
mov byte [ebp - 0x3cd], al
push 0x3c8
lea eax, [ebp - 0x3cc]
push 0
push eax
call fcn.10425c00
mov edx, dword [ebx + 0x10]
xor eax, eax
mov esi, dword [ebx + 0x1f8]
add esp, 0xc
mov ecx, dword [ebx + 0x2240]
test edx, edx
mov dword [ebp - 0x3c8], 5
setne al
mov dword [ebp - 0x3bc], 0
and esi, 3
cmp byte [ebx + 0x2245], 0
mov dword [ebp - 0x3c4], esi
lea eax, [eax*2 + 1]
mov dword [ebp - 0x3cc], eax
movzx eax, cl
mov dword [ebp - 0x3c0], eax
je 0x104047e0
test cl, 0x10
mov ecx, dword [edi + 0x58]
je 0x10404821
xor eax, eax
test ecx, ecx
setne al
mov dword [ebp - 0x4c], eax
jmp 0x10404828
mov eax, dword [ebp - 0x3f4]
cmp byte [eax], 0
je 0x10404802
mov eax, dword [ebp - 0x408]
mov dword [ebp - 0x3f0], eax
cmp byte [eax], 0
mov eax, dword [ebp - 0x3f4]
je 0x10404818
mov ecx, dword [edi + 0x58]
test ecx, ecx
je 0x10404818
mov dword [ebp - 0x4c], 1
mov dword [ebp - 0x3f8], eax
jmp 0x10404828
mov ecx, dword [edi + 0x58]
mov dword [ebp - 0x3f8], eax
mov dword [ebp - 0x4c], 0
test edx, edx
je 0x1040484c
mov eax, dword [ebp - 0x408]
mov dword [ebp - 0x3f0], eax
cmp byte [eax], 0
je 0x1040484c
mov dword [ebp - 0x48], 1
mov dword [ebp - 0x3f0], eax
jmp 0x10404853
mov dword [ebp - 0x48], 0
mov eax, dword [ebx + 0x2224]
movzx edx, byte [ebp - 0x3d9]
movzx edi, byte [ebp - 0x3cd]
mov dword [ebp - 0x3b8], eax
mov eax, dword [ebp - 0x3d4]
mov dword [ebp - 0x3e8], edx
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x38], 1
mov dl, byte [eax + 0x1bc]
mov byte [ebp - 0x3e1], dl
test dl, dl
mov edx, dword [ebp - 0x3e8]
mov dword [ebp - 0x1c], edi
je 0x104048a4
mov eax, dword [eax + 0x54]
mov eax, dword [eax + 8]
jmp 0x104048ac
mov eax, dword [ebp - 0x3ec]
mov eax, dword [eax]
mov dword [ebp - 0x3b4], eax
mov eax, dword [ebp - 0x40c]
shl edx, 0xa
mov dword [ebp - 0x324], edx
xor edx, edx
mov dword [ebp - 0x378], ecx
mov eax, dword [eax]
mov dword [ebp - 0x3b0], eax
mov eax, dword [ebx + 0x2120]
mov dword [ebp - 0x380], eax
mov eax, dword [ebx + 0x2254]
div edi
mov ecx, dword [ebx + 0x20c]
xor edx, edx
imul ecx, dword [ebp - 0x3e8]
and eax, 0xffffff00
imul eax, dword [ebp - 0x3e8]
mov edi, dword [ebx + 0x34]
mov dword [ebp - 0x320], eax
mov eax, dword [ebp - 0x3d4]
mov eax, dword [eax + 0x5c]
lea eax, [eax + ecx*2]
mov ecx, dword [ebp - 0x3d4]
mov dword [ebp - 0x31c], eax
mov eax, dword [ebx + 0x21d4]
mov dword [ebp - 0x3ac], eax
mov eax, dword [ebx + 0x2250]
div edi
mov edx, dword [ebp - 0x3e8]
add eax, 0xff
and eax, 0xffffff00
imul eax, edx
mov dword [ebp - 0x2c], eax
mov eax, dword [ecx]
mov eax, dword [ebx + eax*4 + 0x2128]
test eax, eax
je 0x10404962
mov eax, dword [eax]
mov dword [ebp - 0x388], eax
jmp 0x1040496c
mov dword [ebp - 0x388], 0
mov eax, dword [ebp - 0x3f8]
cmp byte [eax], 0
je 0x10404983
mov dword [ebp - 0x384], 0
jmp 0x1040498c
mov eax, dword [ecx + 0x60]
mov dword [ebp - 0x384], eax
mov eax, dword [ebx + 0x2124]
mov dword [ebp - 0x37c], eax
mov eax, dword [ebx + 0x225c]
imul eax, edx
cmp byte [ebx + 0x223c], 1
mov dword [ebp - 0x308], eax
jne 0x104049c7
mov eax, dword [ecx + 0x64]
mov dword [ebp - 0x38c], eax
mov eax, dword [ecx + 0x68]
imul eax, edx
mov dword [ebp - 0x344], eax
jmp 0x104049db
mov dword [ebp - 0x38c], 0
mov dword [ebp - 0x344], 0
cmp dword [ebx + 0x10], 0
je 0x10404a41
mov ecx, dword [ebx + 0xc]
test ecx, ecx
je 0x10404a3b
cmp byte [ebp - 0x3ce], 0
jne 0x10404a3b
cmp esi, 2
je 0x10404a09
cmp esi, 3
je 0x10404a09
mov eax, dword [ecx + 0x222c]
mov dword [ebp - 0x394], eax
jmp 0x10404a13
mov dword [ebp - 0x394], 0
mov eax, dword [ecx + 0x224c]
xor edx, edx
div edi
mov ecx, dword [ebp - 0x3e8]
mov edx, dword [ebp - 0x3e0]
imul eax, ecx
add eax, 0xff
and eax, 0xffffff00
jmp 0x10404ab5
mov ecx, dword [ebp - 0x3d4]
cmp esi, 2
je 0x10404a80
cmp esi, 3
je 0x10404a80
cmp byte [ecx + 0x1b0], 0
je 0x10404a6b
cmp byte [ebx + 0x2244], 0
jne 0x10404a6b
mov eax, dword [ecx + 0x184]
mov dword [ebp - 0x394], eax
jmp 0x10404a8a
mov eax, dword [ebx + 0x2228]
mov eax, dword [ebx + eax*4 + 0x21c4]
mov dword [ebp - 0x394], eax
jmp 0x10404a8a
mov dword [ebp - 0x394], 0
mov eax, dword [ebp - 0x410]
xor edx, edx
mov ecx, dword [ebp - 0x3e8]
mov eax, dword [eax]
div edi
mov edx, dword [ebp - 0x410]
add eax, 0xff
mov dword [ebp - 0x3e0], edx
and eax, 0xffffff00
imul eax, ecx
mov dword [ebp - 0x28], eax
cmp esi, 2
je 0x10404ad8
cmp esi, 3
je 0x10404ad8
mov eax, 0x872
sub eax, dword [ebx + 0x2228]
mov eax, dword [ebx + eax*4]
mov dword [ebp - 0x390], eax
jmp 0x10404ae2
mov dword [ebp - 0x390], 0
mov eax, dword [edx]
xor edx, edx
div edi
mov edi, dword [ebp - 0x3d4]
add eax, 0xff
and eax, 0xffffff00
imul eax, ecx
cmp dword [ebx + 0x1e4], 0
mov dword [ebp - 0x24], eax
jne 0x10404b13
mov eax, dword [edi + 4]
mov eax, dword [ebx + eax*4 + 0x2154]
jmp 0x10404b19
mov eax, dword [ebx + 0x2178]
cmp byte [edi + 0x1b1], 0
mov dword [ebp - 0x36c], eax
mov eax, dword [edi]
mov eax, dword [ebx + eax*4 + 0x2154]
mov dword [ebp - 0x368], eax
mov eax, dword [ebx + ecx*4 + 0x217c]
mov dword [ebp - 0x364], eax
mov eax, dword [ebx + ecx*4 + 0x2188]
mov dword [ebp - 0x360], eax
mov eax, dword [ebx + ecx*4 + 0x2194]
mov dword [ebp - 0x35c], eax
mov eax, dword [ebx + ecx*4 + 0x21a0]
mov dword [ebp - 0x358], eax
mov eax, dword [ebx + ecx*4 + 0x21ac]
mov dword [ebp - 0x354], eax
mov eax, dword [ebx + ecx*4 + 0x21b8]
mov dword [ebp - 0x350], eax
je 0x10404bd3
mov ecx, dword [ebx + 0x2230]
cmp ecx, 2
jae 0x10404bb6
cmp byte [edi + 0x1b2], 0
je 0x10404ba7
mov eax, dword [edi + 0x188]
mov dword [ebp - 0x34c], eax
jmp 0x10404bc0
mov eax, dword [ebx + ecx*4 + 0x21cc]
mov dword [ebp - 0x34c], eax
jmp 0x10404bc0
mov dword [ebp - 0x34c], 0
lea eax, [ecx - 1]
and eax, 1
mov eax, dword [ebx + eax*4 + 0x21cc]
mov dword [ebp - 0x348], eax
mov ecx, dword [ebx + 0x1dc]
mov eax, ecx
shr eax, 5
and eax, 7
shr ecx, 8
mov dword [ebp - 0x304], eax
and ecx, 7
mov eax, dword [ebp - 0x3f0]
xor esi, esi
mov dword [ebp - 0x300], ecx
movzx eax, byte [eax]
mov dword [ebp - 0x34], eax
movzx eax, byte [ebx + 0x2222]
mov dword [ebp - 8], eax
nop dword [eax + eax]
lea eax, [esi*8]
mov edx, esi
sub eax, esi
shl edx, 7
lea ecx, [edi + eax*4]
mov eax, dword [ecx + 0x18]
add eax, eax
mov dword [ebp + edx - 0x2fc], eax
mov eax, dword [ecx + 0x1c]
add eax, eax
mov dword [ebp + edx - 0x2f8], eax
mov eax, dword [ecx + 0x20]
add eax, eax
mov dword [ebp + edx - 0x2f4], eax
mov eax, dword [ecx + 0x24]
add eax, eax
mov dword [ebp + edx - 0x2f0], eax
mov eax, dword [ecx + 0x28]
add eax, eax
mov dword [ebp + edx - 0x2ec], eax
mov eax, dword [ecx + 0x2c]
add eax, eax
mov dword [ebp + edx - 0x2e8], eax
mov eax, dword [ecx + 0x30]
xor ecx, ecx
add eax, eax
mov dword [ebp + edx - 0x2e4], eax
cmp dword [ebp + esi*4 - 0x304], ecx
jbe 0x10404cb6
mov eax, esi
lea edx, [ebp - 0x1fc]
shl eax, 5
add edx, eax
nop dword [eax]
test esi, esi
jne 0x10404c9d
mov al, byte [ebx + ecx + 0x1ce]
jmp 0x10404ca4
mov al, byte [ebx + ecx + 0x1d2]
movsx eax, al
inc ecx
mov dword [edx], eax
add edx, 4
cmp ecx, dword [ebp + esi*4 - 0x304]
jb 0x10404c90
inc esi
cmp esi, 2
jl 0x10404c10
xor ecx, ecx
mov dword [ebp - 0x3fc], ecx
nop dword [eax + eax]
lea eax, [ebp - 0x304]
xor esi, esi
lea eax, [eax + ecx*4]
mov dword [ebp - 0x418], eax
cmp dword [eax], esi
jbe 0x10404d80
mov al, byte [ebx + 0x2220]
mov edx, dword [edi + 0x50]
lea edi, [ebp - 0x1fc]
mov byte [ebp - 0x3cd], al
mov eax, ecx
shl eax, 5
mov dword [ebp - 0x414], edx
add edi, eax
nop dword [eax + eax]
test ecx, ecx
jne 0x10404d1e
movsx eax, byte [ebx + esi + 0x1c0]
jmp 0x10404d26
movsx eax, byte [ebx + esi + 0x1c4]
mov ecx, dword [ebp - 0x3d4]
mov eax, dword [edx + eax*4]
xor edx, edx
div dword [ecx + 8]
cmp byte [ebp - 0x3cd], 0
je 0x10404d46
mov eax, dword [ebx + edx*4 + 0x2128]
jmp 0x10404d4d
mov eax, dword [ecx + edx*4 + 0x18c]
test eax, eax
je 0x10404d55
mov ecx, dword [eax]
jmp 0x10404d57
xor ecx, ecx
mov eax, dword [edi]
inc esi
mov edx, dword [ebp - 0x414]
add edi, 4
mov dword [ebp + eax*4 - 0x13c], ecx
mov eax, dword [ebp - 0x418]
mov ecx, dword [ebp - 0x3fc]
cmp esi, dword [eax]
jb 0x10404d10
mov edi, dword [ebp - 0x3d4]
inc ecx
mov dword [ebp - 0x3fc], ecx
cmp ecx, 2
jl 0x10404cd0
cmp byte [ebp - 0x3ce], 0
je 0x10404e17
cmp byte [ebx + 0x2220], 0
je 0x10404daa
mov edx, dword [ebx + 0x214c]
jmp 0x10404db0
mov edx, dword [ebx + 0x2150]
test edx, edx
je 0x1040500f
cmp dword [ebp - 0x304], 1
jne 0x1040500f
cmp dword [ebp - 0x300], 0
jne 0x1040500f
mov eax, dword [ebp - 0x2fc]
add eax, 0x10
mov dword [ebp - 0x304], 2
mov dword [ebp - 0x2f8], eax
mov eax, dword [ebp - 0x1fc]
lea ecx, [eax + 8]
mov dword [ebp - 0x1f8], ecx
mov eax, dword [ebp + eax*4 - 0x13c]
mov dword [ebp + ecx*4 - 0x13c], eax
mov eax, dword [ebp - 0x1fc]
mov ecx, dword [edx]
mov dword [ebp + eax*4 - 0x13c], ecx
cmp byte [ebp - 0x3e1], 0
je 0x10404e56
mov eax, dword [edi + 0x54]
mov ecx, dword [ebx]
push 0
push dword [eax + 8]
call fcn.1033bbc0
mov ecx, dword [ebp - 0xa8]
push 0
mov dword [ebp + ecx*4 - 0xa4], eax
mov eax, dword [edi + 0x54]
inc dword [ebp - 0xa8]
mov ecx, dword [ebx]
push dword [eax + 8]
call fcn.1033bbc0
jmp 0x10404f03
cmp dword [ebp - 0x18], 0
mov esi, dword [ebp - 0x3ec]
jne 0x10404e7d
mov ecx, dword [ebx]
push esi
call fcn.1033bb90
mov ecx, dword [ebp - 0xa8]
mov dword [ebp + ecx*4 - 0xa4], eax
inc dword [ebp - 0xa8]
cmp byte [ebx + 0x2220], 0
je 0x10404f0d
mov eax, dword [ebp - 0x1c]
cmp eax, 1
jbe 0x10404e98
dec eax
cmp dword [ebp - 0x18], eax
jne 0x10404f0d
cmp byte [ebx + 0x2245], 0
jne 0x10404efb
cmp dword [ebx + 0x10], 0
je 0x10404ef3
mov eax, dword [ebx + 0x2290]
mov eax, dword [eax + 0x1b8]
test eax, eax
je 0x10404ef3
mov ecx, dword [ebx]
push eax
call fcn.1033bb90
cmp byte [eax + 0x24], 0
je 0x10404ed6
mov eax, dword [ebx + 0x2290]
mov eax, dword [eax + 0x1b8]
mov eax, dword [eax]
mov dword [ebp - 0x50], eax
mov eax, dword [ebx + 0x2290]
mov ecx, dword [ebx]
push dword [eax + 0x1b8]
call fcn.1033bb90
mov ecx, dword [ebp - 0x7c]
mov dword [ebp + ecx*4 - 0x78], eax
inc dword [ebp - 0x7c]
mov dword [edi + 0x1b8], esi
jmp 0x10404f0d
mov ecx, dword [ebx]
push esi
call fcn.1033bb90
mov ecx, dword [ebp - 0x7c]
mov dword [ebp + ecx*4 - 0x78], eax
inc dword [ebp - 0x7c]
cmp byte [ebx + 0x2246], 0
je 0x10404f59
cmp byte [edi + 0x1c8], 0
je 0x10404f59
mov eax, dword [edi + 0x58]
test eax, eax
je 0x10404f59
mov ecx, dword [ebx]
push 0
push eax
call fcn.1033bbc0
mov ecx, dword [ebp - 0xa8]
push 0
push dword [edi + 0x58]
mov dword [ebp + ecx*4 - 0xa4], eax
mov ecx, dword [ebx]
inc dword [ebp - 0xa8]
call fcn.1033bbc0
mov ecx, dword [ebp - 0x7c]
mov dword [ebp + ecx*4 - 0x78], eax
inc dword [ebp - 0x7c]
mov eax, dword [ebx + 0x2150]
test eax, eax
je 0x10404f84
cmp dword [ebp - 0x18], 0
jne 0x10404f84
mov ecx, dword [ebx]
push eax
call fcn.1033bb90
mov ecx, dword [ebp - 0xa8]
mov dword [ebp + ecx*4 - 0xa4], eax
inc dword [ebp - 0xa8]
cmp byte [ebp - 0x404], 0
mov esi, dword [ebp - 0x400]
je 0x10404fae
push dword [ebp + 0x18]
mov edx, dword [ebp - 0x3e8]
lea eax, [ebp - 0x3cc]
push edi
push edx
push esi
push esi
push eax
mov ecx, ebx
call fcn.10406840
mov eax, dword [edi + 0x1cc]
mov ecx, dword [ebp - 0x3d8]
mov dword [ebp - 0x338], eax
mov eax, dword [edi + 0x1d0]
push 0
mov ecx, dword [ecx]
mov dword [ebp - 0x330], eax
lea eax, [ebp - 0x3cc]
push 1
push eax
call fcn.10300220
test eax, eax
jne 0x10405187
mov cl, byte [ebp - 0x3d9]
mov dl, byte [ebx + 0x219]
inc cl
mov byte [ebp - 0x3d9], cl
mov byte [ebp - 0x3cd], dl
cmp cl, dl
jae 0x10405027
mov eax, dword [ebp - 0x3d8]
jmp 0x10404740
pop edi
pop esi
mov eax, 8
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1045066c
mov esp, ebp
pop ebp
ret 0x14
mov ecx, 0x872
mov eax, dword [ebp - 0x390]
test eax, eax
jne 0x1040503f
sub ecx, dword [ebx + 0x2228]
mov eax, dword [ebx + ecx*4]
mov dword [ebx + 0x222c], eax
mov ecx, dword [ebx + 0x2224]
mov eax, dword [ebx + 0x1f8]
inc ecx
and eax, 3
mov dword [ebx + 0x2224], ecx
cmp eax, 1
je 0x10405064
test eax, eax
jne 0x1040506b
xor dword [ebx + 0x2228], 1
cmp byte [edi + 0x1b1], 0
je 0x10405090
mov eax, dword [ebp - 0x348]
mov dword [ebx + 0x2234], eax
mov eax, dword [ebx + 0x2230]
dec eax
and eax, 1
mov dword [ebx + 0x2230], eax
cmp byte [ebp - 0x404], 0
mov byte [ebx + 0x2249], 0
je 0x10405166
mov edx, dword [ebp + 0x18]
test edx, edx
je 0x1040510a
mov dword [esi + edx*4 + 0xad4], ecx
mov eax, dword [ebx + 0x2228]
mov dword [esi + edx*4 + 0xadc], eax
movzx eax, byte [ebx + 0x2249]
mov byte [esi + edx + 0xa9c], al
mov eax, dword [ebx + edx*4 + 0x210c]
mov dword [ebx + 0x2224], eax
mov eax, dword [ebx + edx*4 + 0x2114]
mov dword [ebx + 0x2228], eax
movzx eax, byte [ebx + edx + 0x20d4]
pop edi
mov byte [ebx + 0x2249], al
xor eax, eax
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1045066c
mov esp, ebp
pop ebp
ret 0x14
mov dword [esi + 0xa70], ecx
mov eax, dword [ebx + 0x2228]
mov dword [esi + 0xa74], eax
mov eax, dword [ebx + 0x2230]
mov dword [esi + 0xa78], eax
movzx eax, byte [ebx + 0x2249]
mov byte [esi + 0xa9c], al
mov eax, dword [ebx + 0x20a8]
mov dword [ebx + 0x2224], eax
mov eax, dword [ebx + 0x20ac]
mov dword [ebx + 0x2228], eax
mov eax, dword [ebx + 0x20b0]
mov dword [ebx + 0x2230], eax
movzx eax, byte [ebx + 0x20d4]
mov byte [ebx + 0x2249], al
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.1045066c
mov esp, ebp
pop ebp
ret 0x14
mov ecx, edx
call fcn.102ac650
mov eax, 0xa
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.1045066c
mov esp, ebp
pop ebp
ret 0x14