Function at 0x10097d30
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x54
mov edx, dword [ecx + 0x2be8]
mov eax, edx
push ebx
mov ebx, dword [ecx + 0x2bf0]
and eax, 0x7ff
push esi
mov esi, dword [ecx + 0x2bec]
and ebx, 0xfff
mov dword [esp + 0x20], ecx
mov ecx, dword [ecx + 0x2bf4]
shr edx, 0x10
and ecx, 0xfff
and edx, 0x7ff
mov dword [esp + 0x14], ebx
add ebx, eax
mov dword [esp + 8], ecx
add ecx, edx
movd xmm2, eax
push edi
mov edi, esi
mov dword [esp + 0x3c], ecx
movd xmm0, ebx
and edi, 0x7ff
punpckldq xmm2, xmm0
movd xmm0, ecx
mov ecx, dword [esp + 0x24]
movd xmm1, edx
push 0
mov dword [esp + 0x44], eax
mov eax, dword [ecx]
mov dword [esp + 0x34], edi
lea edi, [esp + 0x54]
mov dword [esp + 0x14], edx
lea edx, [ecx + 0x2bd8]
punpckldq xmm1, xmm0
shr esi, 0x10
push edi
punpckldq xmm2, xmm1
and esi, 0x7ff
push edx
mov dword [esp + 0x20], esi
movaps xmmword [esp + 0x5c], xmm2
mov dword [esp + 0x54], edx
call dword [eax + 0x14]
mov edi, dword [esp + 0x30]
lea edx, [esp + 0x50]
add edi, dword [esp + 0x18]
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x24]
add eax, esi
movd xmm2, dword [esp + 0x30]
movd xmm0, edi
punpckldq xmm2, xmm0
movd xmm0, eax
movd xmm1, esi
mov dword [esp + 0x38], eax
mov eax, dword [ecx]
push edx
punpckldq xmm1, xmm0
lea edx, [ecx + 0x2bd8]
punpckldq xmm2, xmm1
push edx
movaps xmmword [esp + 0x58], xmm2
call dword [eax + 0x10]
mov edx, dword [esp + 0x24]
lea eax, [edi - 1]
mov ecx, dword [edx + 0x2bec]
and ecx, 0x10000000
mov dword [esp + 0x34], ecx
cmove eax, dword [esp + 0x30]
test ecx, ecx
mov ecx, dword [edx + 0x2bec]
mov dword [esp + 0x30], eax
lea eax, [ebx - 1]
cmove eax, dword [esp + 0x40]
mov dword [esp + 0x2c], eax
and ecx, 0x8000000
je 0x10097e7b
mov ebx, dword [esp + 0x3c]
mov esi, dword [esp + 0x38]
dec ebx
dec esi
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
jmp 0x10097e7f
mov ebx, dword [esp + 0x10]
xor eax, eax
test ecx, ecx
mov ecx, dword [edx + 0x2bd8]
sete al
lea eax, [eax*2 - 1]
mov dword [esp + 0x1c], eax
mov eax, ecx
shr eax, 0x18
and eax, 0x3f
mov edi, eax
shl edi, 7
push eax
mov dword [esp + 0x3c], edi
mov eax, ecx
movzx edi, byte [edx + 0x2bdf]
and ecx, 0x3fff
and edi, 0x3f
shr eax, 0x10
shl edi, 7
and eax, 0x3f
push eax
mov dword [esp + 0x44], edi
lea edi, [edx + 0xa60]
push ecx
mov ecx, edi
mov dword [esp + 0x4c], edi
call fcn.100639d0
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x24]
mov edx, dword [eax + 0x2bdc]
mov ecx, edx
shr ecx, 0x18
and ecx, 0x3f
push ecx
mov ecx, edx
and edx, 0x3fff
shr ecx, 0x10
and ecx, 0x3f
push ecx
push edx
mov ecx, edi
call fcn.100639d0
mov edx, eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x28], edx
movzx ecx, word [eax + 0x1076213e]
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x44], ecx
cmp cx, word [eax + 0x1076213e]
jne 0x10098385
cmp ecx, 0x10
jb 0x10098385
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x30]
mov ecx, dword [eax + 0x4240]
mov eax, dword [esp + 0x2c]
lea eax, [ecx + eax*4]
mov dword [esp + 0x2c], eax
mov eax, dword [edx + 0x4240]
mov edx, dword [esp + 0xc]
lea eax, [eax + edi*4]
mov dword [esp + 0x30], eax
test edx, edx
je 0x100989d8
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x1c]
movzx eax, cx
cmp eax, 0x20
jne 0x100980d3
cmp dword [esp + 0x34], 0
jne 0x1009802c
nop dword [eax]
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0xa6c]
mov eax, dword [esp + 0x20]
mov eax, dword [eax + ebx*4 + 0x240]
lea eax, [ecx + eax*4]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x28]
mov eax, dword [eax + esi*4 + 0x240]
lea eax, [ecx + eax*4]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x1009800c
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
sub edx, edi
mov esi, dword [esp + 0x44]
mov dword [esp + 0x3c], edx
mov edx, eax
mov ebx, dword [esp + 0x3c]
nop
mov eax, dword [ebx + edi]
lea edi, [edi + 4]
mov ecx, dword [edi - 4]
mov ebx, dword [esp + 0x40]
mov eax, dword [esi + eax*4]
mov dword [ebx + ecx*4], eax
mov ebx, dword [esp + 0x3c]
sub edx, 1
jne 0x10097fe0
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 0x1c]
add ebx, edi
add esi, edi
sub edx, 1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], edx
jne 0x10097f90
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x18]
neg eax
mov dword [esp + 0x44], eax
nop word [eax + eax]
cmp dword [esp + 0x44], 0
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0xa6c]
mov eax, dword [esp + 0x20]
mov eax, dword [eax + ebx*4 + 0x240]
lea eax, [ecx + eax*4]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x28]
mov eax, dword [eax + esi*4 + 0x240]
lea eax, [ecx + eax*4]
mov dword [esp + 0x40], eax
jge 0x100980b3
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
sub ebx, edi
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x3c]
mov eax, dword [edi + ebx]
lea edi, [edi - 4]
mov ecx, dword [edi + 4]
mov eax, dword [esi + eax*4]
mov esi, dword [esp + 0x40]
mov dword [esi + ecx*4], eax
mov esi, dword [esp + 0x3c]
sub edx, 1
jne 0x10098087
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 0x1c]
add ebx, edi
add esi, edi
sub edx, 1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], edx
jne 0x10098040
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 0x18
jne 0x10098231
cmp dword [esp + 0x34], 0
jne 0x10098187
nop word [eax + eax]
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0xa6c]
mov eax, dword [esp + 0x20]
mov eax, dword [eax + ebx*4 + 0x240]
lea eax, [ecx + eax*4]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x28]
mov eax, dword [eax + esi*4 + 0x240]
lea eax, [ecx + eax*4]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x10098167
mov ebx, dword [esp + 0x30]
mov edx, eax
mov edi, dword [esp + 0x2c]
sub ebx, edi
mov esi, dword [esp + 0x44]
mov eax, dword [ebx + edi]
lea edi, [edi + 4]
mov ecx, dword [esp + 0x40]
lea ecx, [ecx + eax*4]
mov eax, dword [edi - 4]
mov eax, dword [esi + eax*4]
xor eax, dword [ecx]
and eax, 0xffffff
xor dword [ecx], eax
sub edx, 1
jne 0x10098136
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 0x1c]
add ebx, edi
add esi, edi
sub edx, 1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], edx
jne 0x100980f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x18]
neg eax
mov dword [esp + 0x44], eax
cmp dword [esp + 0x44], 0
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0xa6c]
mov eax, dword [esp + 0x20]
mov eax, dword [eax + ebx*4 + 0x240]
lea eax, [ecx + eax*4]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x28]
mov eax, dword [eax + esi*4 + 0x240]
lea ecx, [ecx + eax*4]
mov dword [esp + 0x3c], ecx
jge 0x10098211
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x2c]
sub ebx, edi
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x40]
nop dword [eax + eax]
mov eax, dword [edi + ebx]
lea edi, [edi - 4]
lea ecx, [ecx + eax*4]
mov eax, dword [edi + 4]
mov eax, dword [esi + eax*4]
xor eax, dword [ecx]
and eax, 0xffffff
xor dword [ecx], eax
mov ecx, dword [esp + 0x3c]
sub edx, 1
jne 0x100981e0
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 0x1c]
add ebx, edi
add esi, edi
sub edx, 1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], edx
jne 0x10098191
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp dword [esp + 0x34], 0
jne 0x100982de
nop dword [eax]
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0xa68]
mov eax, dword [esp + 0x20]
mov eax, dword [eax + ebx*4 + 0x240]
lea eax, [ecx + eax*2]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x28]
mov eax, dword [eax + esi*4 + 0x240]
lea eax, [ecx + eax*2]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x100982be
mov edx, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
sub edx, edi
mov esi, dword [esp + 0x44]
mov dword [esp + 0x3c], edx
mov edx, eax
mov ebx, dword [esp + 0x3c]
nop
mov eax, dword [ebx + edi]
lea edi, [edi + 4]
mov ecx, dword [edi - 4]
mov ebx, dword [esp + 0x40]
mov ax, word [esi + eax*2]
mov word [ebx + ecx*2], ax
mov ebx, dword [esp + 0x3c]
sub edx, 1
jne 0x10098290
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 0x1c]
add ebx, edi
add esi, edi
sub edx, 1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], edx
jne 0x10098240
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x18]
neg eax
mov dword [esp + 0x44], eax
nop dword [eax + eax]
cmp dword [esp + 0x44], 0
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0xa68]
mov eax, dword [esp + 0x20]
mov eax, dword [eax + ebx*4 + 0x240]
lea eax, [ecx + eax*2]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x28]
mov eax, dword [eax + esi*4 + 0x240]
lea eax, [ecx + eax*2]
mov dword [esp + 0x40], eax
jge 0x10098365
mov ebx, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
sub ebx, edi
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x3c]
mov eax, dword [ebx + edi]
lea edi, [edi - 4]
mov ecx, dword [edi + 4]
mov ax, word [esi + eax*2]
mov esi, dword [esp + 0x40]
mov word [esi + ecx*2], ax
mov esi, dword [esp + 0x3c]
sub edx, 1
jne 0x10098337
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 0x1c]
add ebx, edi
add esi, edi
sub edx, 1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], edx
jne 0x100982f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x48]
mov eax, dword [eax]
and eax, 0x3f000000
cmp eax, 0x13000000
jne 0x10098591
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x2bdc]
and eax, 0x3f000000
cmp eax, 0x13000000
jne 0x100987f3
mov edx, dword [esp + 0xc]
test edx, edx
je 0x100989d8
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
shl eax, 2
cmp dword [esp + 0x34], 0
jne 0x100984b0
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x48], eax
lea eax, [edi*4]
mov dword [esp + 0x44], eax
nop word [eax + eax]
mov eax, dword [esp + 0x24]
mov edi, dword [ecx + ebx*4 + 0x240]
mov eax, dword [eax + 0xa64]
add edi, eax
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x28]
mov edx, dword [edi + esi*4 + 0x240]
add edx, eax
mov eax, ebx
and eax, 7
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0xc]
mov eax, dword [ecx + eax*4 + 0x4240]
add eax, dword [esp + 0x48]
mov dword [esp + 0x38], eax
mov eax, esi
and eax, 7
mov eax, dword [edi + eax*4 + 0x4240]
add eax, dword [esp + 0x44]
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x10098490
mov ebx, dword [esp + 0x38]
mov edx, eax
mov edi, dword [esp + 0x40]
sub ebx, edi
mov esi, dword [esp + 0x3c]
mov eax, dword [ebx + edi]
lea edi, [edi + 4]
mov ecx, dword [edi - 4]
mov al, byte [esi + eax]
mov esi, dword [esp + 0x34]
mov byte [esi + ecx], al
mov esi, dword [esp + 0x3c]
sub edx, 1
jne 0x10098460
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
add ebx, edi
add esi, edi
sub edx, 1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], edx
jne 0x100983f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [esp + 0x48], eax
lea eax, [edi*4]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x18]
neg eax
mov dword [esp + 0x40], eax
nop dword [eax]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov edi, dword [ecx + ebx*4 + 0x240]
mov eax, dword [eax + 0xa64]
add edi, eax
mov dword [esp + 0x3c], edi
mov edi, dword [esp + 0x28]
mov edi, dword [edi + esi*4 + 0x240]
add edi, eax
mov eax, ebx
and eax, 7
mov dword [esp + 0x30], edi
mov edi, dword [esp + 0x1c]
mov eax, dword [ecx + eax*4 + 0x4240]
add eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x34], eax
mov eax, esi
and eax, 7
mov eax, dword [ecx + eax*4 + 0x4240]
add eax, dword [esp + 0x44]
cmp dword [esp + 0x40], 0
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x38], eax
jge 0x10098571
mov ebx, dword [esp + 0x34]
mov edi, eax
mov esi, dword [esp + 0x3c]
sub ebx, edi
mov edx, ecx
mov eax, dword [ebx + edi]
lea edi, [edi - 4]
mov ecx, dword [edi + 4]
mov al, byte [esi + eax]
mov esi, dword [esp + 0x30]
mov byte [esi + ecx], al
mov esi, dword [esp + 0x3c]
sub edx, 1
jne 0x10098545
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 0x1c]
add ebx, edi
add esi, edi
sub edx, 1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], edx
jne 0x100984d0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 0x14000000
jne 0x100987f3
mov eax, dword [esp + 0x24]
mov eax, dword [eax + 0x2bdc]
and eax, 0x3f000000
cmp eax, 0x14000000
jne 0x100987f3
mov ecx, dword [esp + 0xc]
test ecx, ecx
je 0x100989d8
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x30]
shl eax, 2
cmp dword [esp + 0x34], 0
jne 0x100986de
mov edx, dword [esp + 0x20]
mov dword [esp + 0x48], eax
lea eax, [edi*4]
mov edi, dword [esp + 0x28]
mov dword [esp + 0x44], eax
nop
mov eax, dword [edx + ebx*4 + 0x240]
mov dword [esp + 0x38], eax
mov eax, dword [edi + esi*4 + 0x240]
mov dword [esp + 0x30], eax
mov eax, ebx
and eax, 7
mov eax, dword [edx + eax*4 + 0x4240]
add eax, dword [esp + 0x48]
mov dword [esp + 0x34], eax
mov eax, esi
and eax, 7
mov eax, dword [edi + eax*4 + 0x4240]
add eax, dword [esp + 0x44]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x100986ba
mov ecx, dword [esp + 0x34]
mov esi, dword [esp + 0x40]
sub ecx, esi
mov dword [esp + 0x34], ecx
mov dword [esp + 0x3c], eax
nop dword [eax]
mov eax, dword [esi]
lea esi, [esi + 4]
add eax, dword [esp + 0x30]
mov edx, dword [esp + 0x24]
mov ebx, eax
mov ecx, dword [ecx + esi - 4]
and ebx, 1
add ecx, dword [esp + 0x38]
shr eax, 1
mov edx, dword [edx + 0xa64]
shl ebx, 2
lea edi, [eax + edx]
mov eax, ecx
shr eax, 1
and cl, 1
shl cl, 2
mov dl, byte [eax + edx]
mov eax, 0xf0
shr dl, cl
mov ecx, ebx
and dl, 0xf
sar eax, cl
and al, byte [edi]
shl dl, cl
mov ecx, dword [esp + 0x34]
or dl, al
sub dword [esp + 0x3c], 1
mov byte [edi], dl
jne 0x10098650
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x28]
add ebx, dword [esp + 0x1c]
add esi, dword [esp + 0x1c]
sub ecx, 1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], ecx
jne 0x100985f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, dword [esp + 0x18]
mov dword [esp + 0x48], eax
lea eax, [edi*4]
mov edi, dword [esp + 0x20]
mov dword [esp + 0x44], eax
mov eax, edx
neg eax
mov dword [esp + 0x40], eax
nop dword [eax]
mov eax, dword [edi + ebx*4 + 0x240]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x28]
mov eax, dword [eax + esi*4 + 0x240]
mov dword [esp + 0x30], eax
mov eax, ebx
and eax, 7
mov eax, dword [edi + eax*4 + 0x4240]
add eax, dword [esp + 0x48]
mov dword [esp + 0x34], eax
mov eax, esi
and eax, 7
mov eax, dword [ecx + eax*4 + 0x4240]
add eax, dword [esp + 0x44]
cmp dword [esp + 0x40], 0
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x3c], eax
jge 0x100987cf
mov esi, eax
mov dword [esp + 0x3c], edx
mov eax, dword [esp + 0x34]
sub eax, esi
mov dword [esp + 0x34], eax
mov ecx, dword [eax + esi]
lea esi, [esi - 4]
mov eax, dword [esi + 4]
add eax, dword [esp + 0x30]
mov edx, dword [esp + 0x24]
mov ebx, eax
add ecx, dword [esp + 0x38]
and ebx, 1
shr eax, 1
shl ebx, 2
mov edx, dword [edx + 0xa64]
lea edi, [eax + edx]
mov eax, ecx
shr eax, 1
and cl, 1
shl cl, 2
mov dl, byte [eax + edx]
mov eax, 0xf0
shr dl, cl
mov ecx, ebx
and dl, 0xf
sar eax, cl
and al, byte [edi]
shl dl, cl
or dl, al
sub dword [esp + 0x3c], 1
mov eax, dword [esp + 0x34]
mov byte [edi], dl
jne 0x10098765
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
add ebx, dword [esp + 0x1c]
add esi, dword [esp + 0x1c]
sub ecx, 1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], ecx
jne 0x10098700
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edi, dword [esp + 0xc]
test edi, edi
je 0x100989d8
mov eax, dword [esp + 0x2c]
shl eax, 2
cmp dword [esp + 0x34], 0
jne 0x100988ee
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x30]
shl eax, 2
mov dword [esp + 0x44], eax
mov eax, dword [ecx + ebx*4 + 0x240]
mov dword [esp + 0x2c], eax
mov eax, dword [edx + esi*4 + 0x240]
mov dword [esp + 0x24], eax
mov eax, ebx
and eax, 7
mov eax, dword [ecx + eax*4 + 0x4240]
add eax, dword [esp + 0x48]
mov dword [esp + 0x30], eax
mov eax, esi
and eax, 7
mov eax, dword [edx + eax*4 + 0x4240]
add eax, dword [esp + 0x44]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x100988ca
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0x30]
mov ebx, dword [esp + 0x40]
sub esi, edi
mov dword [esp + 0x34], eax
nop dword [eax]
mov eax, dword [esi + edi]
mov ecx, ebx
add eax, dword [esp + 0x2c]
push eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 0x1076210c]
call eax
push eax
mov eax, dword [edi]
mov ecx, ebx
add eax, dword [esp + 0x28]
push eax
mov eax, dword [esp + 0x44]
mov eax, dword [eax + 0x10762114]
call eax
sub dword [esp + 0x34], 1
lea edi, [edi + 4]
jne 0x10098880
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
add ebx, dword [esp + 0x1c]
add esi, dword [esp + 0x1c]
sub edi, 1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], edi
jne 0x10098824
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x30]
shl eax, 2
mov dword [esp + 0x44], eax
mov eax, ecx
neg eax
mov dword [esp + 0x30], eax
nop dword [eax]
mov eax, dword [edx + ebx*4 + 0x240]
mov edi, dword [esp + 0x28]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x28]
mov eax, dword [eax + esi*4 + 0x240]
mov dword [esp + 0x4c], eax
mov eax, ebx
and eax, 7
mov eax, dword [edx + eax*4 + 0x4240]
add eax, dword [esp + 0x48]
mov dword [esp + 0x2c], eax
mov eax, esi
and eax, 7
mov eax, dword [edi + eax*4 + 0x4240]
add eax, dword [esp + 0x44]
cmp dword [esp + 0x30], 0
mov edi, dword [esp + 0xc]
mov dword [esp + 0x34], eax
jge 0x100989bb
mov esi, dword [esp + 0x2c]
mov edi, eax
mov ebx, dword [esp + 0x40]
sub esi, edi
mov dword [esp + 0x34], ecx
mov eax, dword [esi + edi]
mov ecx, ebx
add eax, dword [esp + 0x24]
push eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + 0x1076210c]
call eax
push eax
mov eax, dword [edi]
mov ecx, ebx
add eax, dword [esp + 0x50]
push eax
mov eax, dword [esp + 0x44]
mov eax, dword [eax + 0x10762114]
call eax
sub dword [esp + 0x34], 1
lea edi, [edi - 4]
jne 0x10098971
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0xc]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
add ebx, dword [esp + 0x1c]
add esi, dword [esp + 0x1c]
sub edi, 1
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], edi
jne 0x10098910
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret