Function at 0x1001a9d0
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x68
mov edx, dword [esp + 0x6c]
push ebx
mov ebx, dword [esp + 0x78]
push ebp
mov ebp, dword [esp + 0x78]
mov ecx, dword [edx + 0xbc]
push esi
mov esi, dword [edx + 0xd0]
mov eax, dword [ebp + 0x14]
push edi
mov edi, dword [edx + 0xcc]
mov dword [esp + 0x40], eax
mov eax, dword [ebx + 0x14]
mov dword [esp + 0x6c], edi
test eax, eax
mov dword [esp + 0x38], esi
mov dword [esp + 0x4c], 1
jne 0x1001aa16
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0x10]
mov dword [esp + 0x10], eax
mov eax, dword [edx + 0x10]
mov ebx, dword [edx + 0xc]
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x14], eax
mov esi, dword [esi + 8]
xor eax, eax
mov dword [esp + 0x30], ebx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x28], eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x3c], edx
add eax, 0xfffffffa
cmp eax, 0xe
ja case.0x1001aa5a.10
xor edx, edx
mov dl, byte [eax + 0x1001c2b0]
jmp dword [edx*4 + 0x1001c29c]
test cl, 1
je 0x1001af5e
cmp dword [edi], 0
je 0x1001abd5
mov eax, ebx
xor edx, edx
imul eax, dword [esp + 0x14]
div dword [0x1008c250]
push 1
push 0xc00
mov dword [esp + 0x58], eax
call fcn.10040c80
mov ebp, eax
add esp, 8
test ebp, ebp
jne 0x1001aaa8
mov eax, 6
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
test ebx, ebx
jle 0x1001abb0
mov edi, dword [esp + 0x10]
mov dword [esp + 0x60], 0
mov eax, edi
neg eax
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x30]
imul edi, eax
mov dword [esp + 0x5c], edi
mov dword [esp + 0x64], eax
jmp 0x1001aad9
mov edi, dword [esp + 0x5c]
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x1001aae7
sub edi, dword [esp + 0x10]
jmp 0x1001aaeb
mov edi, dword [esp + 0x60]
mov eax, dword [esp + 0x40]
add edi, eax
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x1001ab81
mov ecx, eax
mov dword [esp + 0x68], ecx
mov cl, byte [edi]
mov al, byte [edi + 1]
inc edi
mov dl, al
mov bl, cl
and al, 0xfc
shl cl, 3
shl al, 1
mov byte [esp + 0x1c], cl
mov byte [esp + 0x24], al
mov eax, dword [esp + 0x1c]
inc edi
shr bl, 2
shl dl, 6
and bl, 0x38
and eax, 0xff
or dl, bl
mov ebx, dword [ebp + eax*4 + 0x800]
lea eax, [ebp + eax*4 + 0x800]
mov byte [esp + 0x18], dl
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x18]
inc ebx
and ecx, 0xff
mov dword [eax], ebx
and edx, 0xff
lea eax, [ebp + ecx*4 + 0x400]
mov ecx, dword [ebp + ecx*4 + 0x400]
inc ecx
mov dword [eax], ecx
mov ecx, dword [ebp + edx*4]
lea eax, [ebp + edx*4]
inc ecx
mov dword [eax], ecx
mov eax, dword [esp + 0x68]
dec eax
mov dword [esp + 0x68], eax
jne 0x1001ab03
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x60]
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x5c]
add edi, eax
mov eax, dword [esp + 0x64]
add edx, ecx
dec eax
mov dword [esp + 0x60], edi
mov dword [esp + 0x5c], edx
mov dword [esp + 0x64], eax
jne 0x1001aad5
mov edi, dword [esp + 0x6c]
mov eax, dword [esp + 0x50]
lea edx, [edi + 0xc]
push edx
push ebp
push eax
call fcn.1001ca40
add esp, 0xc
mov dword [edi], 0
push ebp
call fcn.10040cb0
mov ebx, dword [esp + 0x34]
add esp, 4
mov eax, dword [edi + 4]
test eax, eax
je 0x1001ade0
mov ebp, dword [esp + 0x30]
mov ecx, dword [esp + 0x38]
imul ebp, dword [esp + 0x14]
mov dl, byte [edi + 0x11]
mov ebx, dword [ecx + 8]
shl ebp, 1
mov byte [esp + 0x48], dl
mov dl, byte [edi + 0x10]
mov al, byte [edi + 0xf]
mov cl, byte [edi + 0xe]
mov dword [esp + 0x34], ebp
add ebp, ebx
mov bl, byte [edi + 0x13]
mov byte [esp + 0x44], dl
mov dl, byte [edi + 0x12]
mov byte [esp + 0x5c], bl
mov byte [esp + 0x58], dl
and ebx, 0xff
and edx, 0xff
mov byte [esp + 0x54], al
add ebx, edx
mov edx, dword [esp + 0x44]
mov byte [esp + 0x50], cl
and eax, 0xff
sar ebx, 1
and ecx, 0xff
mov byte [edi + 0x1a], bl
mov ebx, dword [esp + 0x48]
add eax, ecx
and edx, 0xff
and ebx, 0xff
sar eax, 1
add edx, ebx
mov byte [edi + 0x18], al
mov eax, dword [esp + 0x30]
sar edx, 1
test eax, eax
mov byte [edi + 0x19], dl
jle 0x1001add0
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x30]
mov ecx, eax
mov dword [esp + 0x60], 0
neg ecx
mov dword [esp + 0x70], ecx
mov ecx, eax
imul ecx, edx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x14]
test edx, edx
je 0x1001aca7
mov edi, dword [esp + 0x64]
sub edi, eax
jmp 0x1001acab
mov edi, dword [esp + 0x60]
mov eax, dword [esp + 0x40]
add edi, eax
test ecx, ecx
jle 0x1001ada5
mov dword [esp + 0x68], ecx
mov dl, byte [edi]
mov al, byte [edi + 1]
inc edi
mov bl, dl
mov cl, al
and al, 0xfc
shr bl, 2
shl cl, 6
and bl, 0x38
inc edi
or cl, bl
mov bl, byte [esp + 0x50]
shl dl, 3
shl al, 1
cmp dl, bl
mov byte [esp + 0x18], cl
mov byte [esp + 0x24], al
mov byte [esp + 0x1c], dl
jb 0x1001ad2a
cmp dl, byte [esp + 0x54]
ja 0x1001ad2a
cmp cl, byte [esp + 0x44]
jb 0x1001ad2a
cmp cl, byte [esp + 0x48]
ja 0x1001ad2a
cmp al, byte [esp + 0x58]
jb 0x1001ad2a
cmp al, byte [esp + 0x5c]
ja 0x1001ad2a
mov byte [ebp], 0
mov ecx, dword [0x1008cad8]
mov edx, dword [0x1008c6d8]
inc ebp
lea eax, [ecx + edx]
mov ecx, dword [0x1008c2d8]
add eax, ecx
jmp 0x1001ad7d
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
and eax, 0xff
and ecx, 0xff
mov byte [ebp], 1
inc ebp
mov eax, dword [eax*4 + 0x1008c2d8]
mov edx, dword [ecx*4 + 0x1008cad8]
add eax, edx
mov edx, dword [esp + 0x18]
and edx, 0xff
mov ecx, dword [edx*4 + 0x1008c6d8]
mov edx, dword [esp + 0x2c]
add eax, ecx
mov ecx, eax
shr ecx, 0x10
add edx, ecx
mov ecx, dword [esp + 0x28]
inc ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x20]
mov byte [esi], al
mov edx, eax
inc esi
shr edx, 8
shr eax, 0x10
mov byte [esi], dl
mov byte [ecx], al
mov eax, dword [esp + 0x68]
inc esi
inc ecx
dec eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x68], eax
jne 0x1001acbd
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x60]
add edx, ecx
mov ecx, dword [esp + 0x6c]
add edi, eax
dec ecx
mov dword [esp + 0x60], edi
mov dword [esp + 0x64], edx
mov dword [esp + 0x6c], ecx
jne 0x1001ac93
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
add esi, dword [edx + 8]
jmp 0x1001bfeb
mov edi, ebx
mov edx, dword [esp + 0x38]
imul edi, dword [esp + 0x14]
mov eax, dword [edx + 8]
mov ecx, dword [esp + 0x7c]
shl edi, 1
mov ebp, edi
mov dword [esp + 0x34], edi
add ebp, eax
mov eax, dword [esp + 0x80]
push ebp
push eax
push ecx
call fcn.1001cc80
add esp, 0xc
test eax, eax
jne 0x1001ae1f
mov eax, 2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
test ebx, ebx
jle 0x1001af50
mov edx, dword [esp + 0x10]
mov dword [esp + 0x64], 0
mov eax, edx
mov dword [esp + 0x68], ebx
neg eax
mov dword [esp + 0x70], eax
mov eax, edx
imul eax, ebx
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x1001ae58
mov edi, dword [esp + 0x60]
sub edi, edx
jmp 0x1001ae5c
mov edi, dword [esp + 0x64]
mov eax, dword [esp + 0x40]
add edi, eax
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x1001af25
mov dword [esp + 0x6c], eax
mov al, byte [edi]
mov cl, byte [edi + 1]
mov bl, byte [ebp]
inc edi
inc edi
inc ebp
test bl, bl
jne 0x1001ae98
mov ecx, dword [0x1008ccd8]
mov eax, dword [0x1008c8d8]
add eax, ecx
mov ecx, dword [0x1008c4d8]
add eax, ecx
jmp 0x1001aefd
mov bl, al
mov dl, cl
shr bl, 2
shl dl, 6
and bl, 0x38
and cl, 0xfc
or dl, bl
mov byte [esp + 0x18], dl
mov edx, dword [esp + 0x18]
shl al, 3
and eax, 0xff
and edx, 0xff
shl cl, 1
mov eax, dword [eax*4 + 0x1008cad8]
mov ebx, dword [edx*4 + 0x1008c6d8]
and ecx, 0xff
add eax, ebx
mov edx, dword [ecx*4 + 0x1008c2d8]
add eax, edx
mov edx, dword [esp + 0x2c]
mov ecx, eax
shr ecx, 0x10
add edx, ecx
mov ecx, dword [esp + 0x28]
inc ecx
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x28], ecx
mov byte [esi], al
mov ecx, eax
inc esi
shr ecx, 8
mov byte [esi], cl
mov ecx, dword [esp + 0x20]
shr eax, 0x10
mov byte [ecx], al
mov eax, dword [esp + 0x6c]
inc esi
inc ecx
dec eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x6c], eax
jne 0x1001ae72
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x60]
mov edi, dword [esp + 0x64]
add ecx, eax
mov eax, dword [esp + 0x68]
add edi, edx
dec eax
mov dword [esp + 0x64], edi
mov dword [esp + 0x60], ecx
mov dword [esp + 0x68], eax
jne 0x1001ae48
mov edi, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
add edi, dword [ecx + 8]
mov esi, edi
jmp 0x1001c233
test ebx, ebx
jle case.0x1001aa5a.10
mov edi, dword [esp + 0x10]
mov dword [esp + 0x64], 0
mov eax, edi
mov dword [esp + 0x68], ebx
neg eax
imul edi, ebx
mov dword [esp + 0x70], eax
mov dword [esp + 0x60], edi
jmp 0x1001af8b
mov edi, dword [esp + 0x60]
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x1001af99
sub edi, dword [esp + 0x10]
jmp 0x1001af9d
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x14]
add edi, edx
test eax, eax
jle 0x1001b022
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x6c], eax
mov al, byte [edi]
mov cl, byte [edi + 1]
inc edi
mov bl, al
mov dl, cl
and cl, 0xfc
shr bl, 2
shl dl, 6
and bl, 0x38
inc edi
or dl, bl
mov byte [esp + 0x18], dl
mov edx, dword [esp + 0x18]
shl al, 3
and eax, 0xff
and edx, 0xff
shl cl, 1
mov eax, dword [eax*4 + 0x1008cad8]
mov ebx, dword [edx*4 + 0x1008c6d8]
and ecx, 0xff
add eax, ebx
add eax, dword [ecx*4 + 0x1008c2d8]
mov byte [esi], al
mov ecx, eax
inc esi
shr ecx, 8
shr eax, 0x10
mov byte [esi], cl
mov byte [ebp], al
mov eax, dword [esp + 0x6c]
inc esi
inc ebp
dec eax
mov dword [esp + 0x6c], eax
jne 0x1001afb3
mov dword [esp + 0x20], ebp
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x64]
add ecx, eax
mov eax, dword [esp + 0x68]
add edi, edx
dec eax
mov dword [esp + 0x64], edi
mov dword [esp + 0x60], ecx
mov dword [esp + 0x68], eax
jne 0x1001af87
jmp case.0x1001aa5a.10
mov edx, dword [esp + 0x80]
mov eax, dword [edx + 0x18]
test eax, eax
jne 0x1001b06d
mov eax, 0xa
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
mov eax, dword [eax + 4]
test cl, 1
mov dword [esp + 0x60], eax
je 0x1001b54e
cmp dword [edi], 0
je 0x1001b1d3
mov eax, ebx
xor edx, edx
imul eax, dword [esp + 0x14]
div dword [0x1008c250]
push 1
push 0xc00
mov dword [esp + 0x58], eax
call fcn.10040c80
mov ebp, eax
add esp, 8
test ebp, ebp
jne 0x1001b0bb
mov eax, 6
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
test ebx, ebx
jle 0x1001b19e
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
mov edx, eax
xor ebx, ebx
neg edx
imul eax, ecx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], edx
mov dword [esp + 0x68], eax
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x1001b0f6
mov ebx, dword [esp + 0x10]
mov ecx, eax
sub ecx, ebx
jmp 0x1001b0f8
mov ecx, ebx
mov ebx, dword [esp + 0x40]
add ecx, ebx
mov ebx, dword [esp + 0x14]
test ebx, ebx
jle 0x1001b17b
mov edx, ebx
mov ebx, dword [esp + 0x60]
xor eax, eax
mov al, byte [ecx]
inc ecx
lea eax, [ebx + eax*4]
mov bl, byte [eax]
inc eax
mov byte [esp + 0x1c], bl
mov bl, byte [eax]
mov al, byte [eax + 1]
mov byte [esp + 0x24], al
mov eax, dword [esp + 0x1c]
and eax, 0xff
mov byte [esp + 0x18], bl
mov ebx, dword [ebp + eax*4 + 0x800]
lea eax, [ebp + eax*4 + 0x800]
inc ebx
mov dword [eax], ebx
mov eax, dword [esp + 0x18]
and eax, 0xff
mov ebx, dword [ebp + eax*4 + 0x400]
lea eax, [ebp + eax*4 + 0x400]
inc ebx
mov dword [eax], ebx
mov eax, dword [esp + 0x24]
and eax, 0xff
mov ebx, dword [ebp + eax*4]
lea eax, [ebp + eax*4]
inc ebx
dec edx
mov dword [eax], ebx
jne 0x1001b108
mov edx, dword [esp + 0x70]
mov eax, dword [esp + 0x68]
mov ebx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x10]
add ebx, ecx
mov ecx, dword [esp + 0x64]
add eax, edx
dec ecx
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x68], eax
mov dword [esp + 0x64], ecx
jne 0x1001b0e4
mov edx, dword [esp + 0x50]
lea ecx, [edi + 0xc]
push ecx
push ebp
push edx
call fcn.1001ca40
add esp, 0xc
test eax, eax
jne 0x1001b1c0
mov dword [esp + 0x4c], eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
push ebp
mov dword [edi], 0
call fcn.10040cb0
mov ebx, dword [esp + 0x34]
add esp, 4
mov eax, dword [edi + 4]
test eax, eax
je 0x1001b3df
mov ecx, dword [esp + 0x30]
mov dl, byte [edi + 0xe]
imul ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x38]
mov byte [esp + 0x50], dl
mov dl, byte [edi + 0x11]
mov ebx, dword [eax + 8]
mov byte [esp + 0x48], dl
mov dl, byte [edi + 0x10]
mov al, byte [edi + 0xf]
shl ecx, 1
mov ebp, ecx
mov byte [esp + 0x44], dl
mov dl, byte [edi + 0x12]
add ebp, ebx
mov bl, byte [edi + 0x13]
mov byte [esp + 0x58], dl
mov byte [esp + 0x5c], bl
and ebx, 0xff
and edx, 0xff
mov byte [esp + 0x54], al
add ebx, edx
mov edx, dword [esp + 0x44]
sar ebx, 1
mov byte [edi + 0x1a], bl
mov ebx, dword [esp + 0x48]
and edx, 0xff
and ebx, 0xff
add edx, ebx
and eax, 0xff
sar edx, 1
mov byte [edi + 0x19], dl
mov edx, dword [esp + 0x50]
and edx, 0xff
mov dword [esp + 0x34], ecx
add eax, edx
sar eax, 1
mov byte [edi + 0x18], al
mov eax, dword [esp + 0x30]
test eax, eax
jle 0x1001b3d1
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x30]
mov eax, edx
mov dword [esp + 0x64], 0
neg eax
mov dword [esp + 0x74], eax
mov eax, edx
imul eax, edi
mov dword [esp + 0x68], eax
mov dword [esp + 0x70], edi
jmp 0x1001b29d
mov eax, dword [esp + 0x68]
mov edi, dword [esp + 0x3c]
test edi, edi
je 0x1001b2a9
sub eax, edx
jmp 0x1001b2ad
mov eax, dword [esp + 0x64]
mov edi, dword [esp + 0x40]
add edi, eax
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x1001b3aa
mov dword [esp + 0x6c], eax
mov edx, dword [esp + 0x60]
xor ecx, ecx
mov cl, byte [edi]
mov bl, byte [esp + 0x50]
inc edi
lea eax, [edx + ecx*4]
mov dl, byte [eax + 1]
mov byte [esp + 0x18], dl
mov cl, byte [eax]
inc eax
cmp cl, bl
mov byte [esp + 0x1c], cl
mov al, byte [eax + 1]
mov byte [esp + 0x24], al
jb 0x1001b326
cmp cl, byte [esp + 0x54]
ja 0x1001b326
cmp dl, byte [esp + 0x44]
jb 0x1001b326
cmp dl, byte [esp + 0x48]
ja 0x1001b326
cmp al, byte [esp + 0x58]
jb 0x1001b326
cmp al, byte [esp + 0x5c]
ja 0x1001b326
mov byte [ebp], 0
mov eax, dword [0x1008ccd8]
mov ecx, dword [0x1008c8d8]
inc ebp
add eax, ecx
mov ecx, dword [0x1008c4d8]
add eax, ecx
jmp 0x1001b37a
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
and edx, 0xff
and ecx, 0xff
mov byte [ebp], 1
inc ebp
mov eax, dword [edx*4 + 0x1008c2d8]
mov edx, dword [ecx*4 + 0x1008cad8]
add eax, edx
mov edx, dword [esp + 0x18]
and edx, 0xff
mov ecx, dword [edx*4 + 0x1008c6d8]
mov edx, dword [esp + 0x2c]
add eax, ecx
mov ecx, eax
shr ecx, 0x10
add edx, ecx
mov ecx, dword [esp + 0x28]
inc ecx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x20]
mov byte [esi], al
mov edx, eax
inc esi
shr edx, 8
shr eax, 0x10
mov byte [esi], dl
mov byte [ecx], al
mov eax, dword [esp + 0x6c]
inc esi
inc ecx
dec eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x6c], eax
jne 0x1001b2c3
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x74]
mov edi, dword [esp + 0x68]
mov ebx, dword [esp + 0x64]
add edi, eax
mov eax, dword [esp + 0x70]
add ebx, edx
dec eax
mov dword [esp + 0x64], ebx
mov dword [esp + 0x68], edi
mov dword [esp + 0x70], eax
jne 0x1001b299
mov edx, dword [esp + 0x38]
add ecx, dword [edx + 8]
mov esi, ecx
jmp 0x1001bfeb
mov ebp, ebx
mov edx, dword [esp + 0x38]
imul ebp, dword [esp + 0x14]
mov eax, dword [edx + 8]
mov ecx, dword [esp + 0x7c]
shl ebp, 1
mov edi, ebp
mov dword [esp + 0x34], ebp
add edi, eax
mov eax, dword [esp + 0x80]
push edi
push eax
push ecx
call fcn.1001cc80
add esp, 0xc
test eax, eax
jne 0x1001b41e
mov eax, 2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
test ebx, ebx
jle 0x1001b540
mov edx, dword [esp + 0x10]
mov dword [esp + 0x68], 0
mov eax, edx
mov dword [esp + 0x70], ebx
neg eax
mov dword [esp + 0x74], eax
mov eax, edx
imul eax, ebx
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x1001b457
mov eax, dword [esp + 0x64]
sub eax, edx
jmp 0x1001b45b
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x40]
add ecx, eax
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x1001b515
mov ebp, eax
mov ebx, dword [esp + 0x60]
xor eax, eax
mov al, byte [ecx]
inc ecx
inc edi
lea eax, [ebx + eax*4]
mov bl, byte [edi - 1]
test bl, bl
jne 0x1001b49a
mov eax, dword [0x1008ccd8]
mov ebx, dword [0x1008c8d8]
add eax, ebx
mov ebx, dword [0x1008c4d8]
add eax, ebx
jmp 0x1001b4f5
mov dl, byte [eax]
inc eax
mov byte [esp + 0x1c], dl
mov dl, byte [eax]
mov ebx, dword [esp + 0x1c]
mov byte [esp + 0x18], dl
xor edx, edx
mov dl, byte [eax + 1]
and ebx, 0xff
mov eax, dword [edx*4 + 0x1008c2d8]
mov edx, dword [ebx*4 + 0x1008cad8]
add eax, edx
mov edx, dword [esp + 0x18]
and edx, 0xff
mov ebx, dword [edx*4 + 0x1008c6d8]
add eax, ebx
mov ebx, dword [esp + 0x2c]
mov edx, eax
shr edx, 0x10
add ebx, edx
mov edx, dword [esp + 0x28]
inc edx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x10]
mov byte [esi], al
mov ebx, eax
inc esi
shr ebx, 8
mov byte [esi], bl
mov ebx, dword [esp + 0x20]
shr eax, 0x10
inc esi
mov byte [ebx], al
inc ebx
dec ebp
mov dword [esp + 0x20], ebx
jne 0x1001b46f
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x64]
mov ebx, dword [esp + 0x68]
add ecx, eax
mov eax, dword [esp + 0x70]
add ebx, edx
dec eax
mov dword [esp + 0x68], ebx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x70], eax
jne 0x1001b447
mov ebp, dword [esp + 0x34]
mov ecx, dword [esp + 0x38]
add ebp, dword [ecx + 8]
mov esi, ebp
jmp 0x1001c233
test ebx, ebx
jle case.0x1001aa5a.10
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x20]
mov edi, eax
mov edx, eax
neg edi
imul edx, ebx
mov dword [esp + 0x68], 0
mov dword [esp + 0x74], edi
mov dword [esp + 0x70], ebx
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x1001b585
mov ecx, edx
sub ecx, eax
jmp 0x1001b589
mov ecx, dword [esp + 0x68]
mov ebx, dword [esp + 0x40]
add ecx, ebx
mov ebx, dword [esp + 0x14]
test ebx, ebx
jle 0x1001b600
mov edi, ebx
mov ebx, dword [esp + 0x60]
xor eax, eax
mov al, byte [ecx]
inc ecx
lea eax, [ebx + eax*4]
mov bl, byte [eax]
inc eax
mov byte [esp + 0x1c], bl
mov bl, byte [eax]
mov byte [esp + 0x18], bl
xor ebx, ebx
mov bl, byte [eax + 1]
mov eax, ebx
mov ebx, dword [esp + 0x1c]
and ebx, 0xff
mov eax, dword [eax*4 + 0x1008c2d8]
add eax, dword [ebx*4 + 0x1008cad8]
mov ebx, dword [esp + 0x18]
and ebx, 0xff
add eax, dword [ebx*4 + 0x1008c6d8]
inc esi
mov byte [esi - 1], al
mov ebx, eax
shr ebx, 8
shr eax, 0x10
mov byte [esi], bl
inc esi
mov byte [ebp], al
inc ebp
dec edi
jne 0x1001b599
mov eax, dword [esp + 0x10]
mov edi, dword [esp + 0x74]
mov ecx, dword [esp + 0x68]
add edx, edi
add ecx, eax
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x70]
dec ecx
mov dword [esp + 0x70], ecx
jne 0x1001b577
jmp case.0x1001aa5a.10
test cl, 1
je 0x1001baa7
cmp dword [edi], 0
je 0x1001b741
mov eax, ebx
xor edx, edx
imul eax, dword [esp + 0x14]
div dword [0x1008c250]
push 1
push 0xc00
mov dword [esp + 0x58], eax
call fcn.10040c80
mov ebp, eax
add esp, 8
test ebp, ebp
jne 0x1001b667
mov eax, 6
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
test ebx, ebx
jle 0x1001b70b
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x68], 0
mov eax, ecx
mov ebx, ecx
neg eax
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x30]
imul ebx, eax
mov dword [esp + 0x70], eax
jmp 0x1001b696
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x1001b6a4
mov eax, ebx
sub eax, ecx
jmp 0x1001b6a8
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x40]
add eax, edx
mov edx, dword [esp + 0x14]
test edx, edx
jle 0x1001b6f0
xor ecx, ecx
mov cl, byte [eax]
inc dword [ebp + ecx*4 + 0x800]
inc eax
lea ecx, [ebp + ecx*4 + 0x800]
xor ecx, ecx
mov cl, byte [eax]
inc dword [ebp + ecx*4 + 0x400]
inc eax
lea ecx, [ebp + ecx*4 + 0x400]
xor ecx, ecx
mov cl, byte [eax]
inc dword [ebp + ecx*4]
inc eax
dec edx
lea ecx, [ebp + ecx*4]
jne 0x1001b6b6
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x70]
add edx, ecx
mov ecx, dword [esp + 0x74]
add ebx, ecx
dec eax
mov dword [esp + 0x68], edx
mov dword [esp + 0x70], eax
jne 0x1001b692
mov eax, dword [esp + 0x50]
lea edx, [edi + 0xc]
push edx
push ebp
push eax
call fcn.1001ca40
add esp, 0xc
test eax, eax
jne 0x1001b72e
mov eax, 2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
push ebp
mov dword [edi], 0
call fcn.10040cb0
mov ebx, dword [esp + 0x34]
add esp, 4
mov eax, dword [edi + 4]
test eax, eax
je 0x1001b931
mov eax, dword [esp + 0x30]
mov dl, byte [edi + 0xe]
imul eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x38]
mov byte [esp + 0x50], dl
mov dl, byte [edi + 0x11]
mov ebx, dword [ecx + 8]
mov byte [esp + 0x48], dl
mov dl, byte [edi + 0x10]
mov cl, byte [edi + 0xf]
shl eax, 1
mov ebp, eax
mov byte [esp + 0x44], dl
mov dl, byte [edi + 0x12]
add ebp, ebx
mov bl, byte [edi + 0x13]
mov byte [esp + 0x58], dl
mov byte [esp + 0x5c], bl
and ebx, 0xff
and edx, 0xff
mov byte [esp + 0x54], cl
add ebx, edx
mov edx, dword [esp + 0x44]
sar ebx, 1
mov byte [edi + 0x1a], bl
mov ebx, dword [esp + 0x48]
and edx, 0xff
and ebx, 0xff
add edx, ebx
and ecx, 0xff
sar edx, 1
mov byte [edi + 0x19], dl
mov edx, dword [esp + 0x50]
and edx, 0xff
mov dword [esp + 0x34], eax
add ecx, edx
sar ecx, 1
mov byte [edi + 0x18], cl
mov ecx, dword [esp + 0x30]
test ecx, ecx
jle 0x1001bfe2
mov edx, dword [esp + 0x10]
mov dword [esp + 0x68], 0
mov ecx, edx
mov edi, edx
neg ecx
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x30]
imul edi, ecx
mov dword [esp + 0x64], edi
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x1001b816
mov ecx, dword [esp + 0x64]
sub ecx, edx
jmp 0x1001b81a
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x40]
add ecx, edi
mov edi, dword [esp + 0x14]
test edi, edi
jle 0x1001b905
mov al, byte [ecx]
mov dl, byte [ecx + 1]
inc ecx
mov byte [esp + 0x1c], al
inc ecx
mov byte [esp + 0x18], dl
mov bl, byte [ecx]
inc ecx
mov byte [esp + 0x24], bl
mov bl, byte [esp + 0x50]
cmp al, bl
jb 0x1001b88a
cmp al, byte [esp + 0x54]
ja 0x1001b88a
cmp dl, byte [esp + 0x44]
jb 0x1001b88a
cmp dl, byte [esp + 0x48]
ja 0x1001b88a
mov al, byte [esp + 0x24]
mov dl, byte [esp + 0x58]
cmp al, dl
jb 0x1001b88a
cmp al, byte [esp + 0x5c]
ja 0x1001b88a
mov byte [ebp], 0
mov eax, dword [0x1008ccd8]
mov edx, dword [0x1008c8d8]
inc ebp
add eax, edx
mov edx, dword [0x1008c4d8]
add eax, edx
jmp 0x1001b8dd
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
and edx, 0xff
mov byte [ebp], 1
and eax, 0xff
inc ebp
mov ebx, dword [edx*4 + 0x1008cad8]
mov edx, dword [esp + 0x18]
mov eax, dword [eax*4 + 0x1008c2d8]
and edx, 0xff
add eax, ebx
mov ebx, dword [edx*4 + 0x1008c6d8]
add eax, ebx
mov ebx, dword [esp + 0x2c]
mov edx, eax
shr edx, 0x10
add ebx, edx
mov edx, dword [esp + 0x28]
inc edx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], edx
mov byte [esi], al
mov edx, eax
inc esi
shr edx, 8
mov byte [esi], dl
mov edx, dword [esp + 0x20]
shr eax, 0x10
inc esi
mov byte [edx], al
inc edx
dec edi
mov dword [esp + 0x20], edx
jne 0x1001b82c
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x74]
mov edi, dword [esp + 0x64]
mov ebx, dword [esp + 0x68]
add edi, ecx
mov ecx, dword [esp + 0x70]
add ebx, edx
dec ecx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x64], edi
mov dword [esp + 0x70], ecx
jne 0x1001b806
jmp 0x1001bfe2
mov eax, ebx
mov edx, dword [esp + 0x38]
imul eax, dword [esp + 0x14]
mov edi, dword [edx + 8]
mov ecx, dword [esp + 0x7c]
shl eax, 1
mov dword [esp + 0x34], eax
add eax, edi
mov dword [esp + 0x50], eax
push eax
mov eax, dword [esp + 0x84]
push eax
push ecx
call fcn.1001cc80
add esp, 0xc
test eax, eax
jne 0x1001b972
mov eax, 2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
test ebx, ebx
jle 0x1001c185
mov edx, dword [esp + 0x10]
mov ebp, dword [esp + 0x20]
mov eax, edx
mov dword [esp + 0x68], 0
neg eax
mov dword [esp + 0x74], eax
mov eax, edx
imul eax, ebx
mov dword [esp + 0x70], eax
mov dword [esp + 0x6c], ebx
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x1001b9ad
mov ecx, eax
sub ecx, edx
jmp 0x1001b9b1
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x40]
add ecx, edi
mov edi, dword [esp + 0x14]
test edi, edi
jle 0x1001ba74
mov al, byte [ecx]
inc ecx
mov byte [esp + 0x1c], al
mov al, byte [ecx]
inc ecx
mov byte [esp + 0x18], al
mov al, byte [ecx]
inc ecx
mov byte [esp + 0x24], al
mov eax, dword [esp + 0x50]
mov bl, byte [eax]
inc eax
test bl, bl
mov dword [esp + 0x50], eax
jne 0x1001b9fe
mov eax, dword [0x1008ccd8]
mov ebx, dword [0x1008c8d8]
add eax, ebx
mov ebx, dword [0x1008c4d8]
add eax, ebx
jmp 0x1001ba57
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x1c]
and edx, 0xff
and ebx, 0xff
mov eax, dword [edx*4 + 0x1008c2d8]
mov edx, dword [ebx*4 + 0x1008cad8]
add eax, edx
mov edx, dword [esp + 0x18]
and edx, 0xff
mov ebx, dword [edx*4 + 0x1008c6d8]
add eax, ebx
mov ebx, dword [esp + 0x2c]
mov edx, eax
shr edx, 0x10
and edx, 0xff
add ebx, edx
mov edx, dword [esp + 0x28]
inc edx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x10]
mov byte [esi], al
mov ebx, eax
inc esi
shr ebx, 8
shr eax, 0x10
mov byte [esi], bl
inc esi
mov byte [ebp], al
inc ebp
dec edi
jne 0x1001b9c3
mov eax, dword [esp + 0x70]
mov ebx, dword [esp + 0x68]
mov edi, dword [esp + 0x74]
mov ecx, dword [esp + 0x6c]
add ebx, edx
add eax, edi
dec ecx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x70], eax
mov dword [esp + 0x6c], ecx
jne 0x1001b99f
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
add esi, dword [eax + 8]
jmp 0x1001c233
test ebx, ebx
jle case.0x1001aa5a.10
mov eax, dword [esp + 0x10]
xor ecx, ecx
mov edx, eax
mov ebp, eax
neg edx
imul ebp, ebx
mov dword [esp + 0x6c], ebx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], edx
mov edi, dword [esp + 0x3c]
test edi, edi
je 0x1001bada
mov ecx, ebp
sub ecx, eax
mov edi, dword [esp + 0x40]
add ecx, edi
mov edi, dword [esp + 0x14]
test edi, edi
jle 0x1001bb28
xor edx, edx
mov dl, byte [ecx]
inc ecx
mov eax, dword [edx*4 + 0x1008cad8]
xor edx, edx
mov dl, byte [ecx]
add eax, dword [edx*4 + 0x1008c6d8]
inc ecx
xor edx, edx
mov dl, byte [ecx]
add eax, dword [edx*4 + 0x1008c2d8]
inc ecx
mov byte [esi], al
mov edx, eax
inc esi
shr edx, 8
shr eax, 0x10
mov byte [esi], dl
inc esi
mov byte [ebx], al
inc ebx
dec edi
jne 0x1001bae8
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x70]
mov edi, dword [esp + 0x6c]
add ecx, eax
add ebp, edx
dec edi
mov dword [esp + 0x70], ecx
mov dword [esp + 0x6c], edi
jne 0x1001bace
jmp case.0x1001aa5a.10
test cl, 1
je 0x1001c195
mov eax, dword [edi + 8]
test eax, eax
je 0x1001bcd2
mov ecx, ebx
imul ecx, dword [esp + 0x14]
shl ecx, 1
mov dword [esp + 0x34], ecx
add ecx, esi
test ebx, ebx
jle 0x1001bc9a
mov edx, dword [esp + 0x10]
mov ebp, dword [esp + 0x20]
mov eax, edx
mov dword [esp + 0x68], 0
neg eax
mov dword [esp + 0x74], eax
mov eax, edx
imul eax, ebx
mov dword [esp + 0x6c], eax
mov dword [esp + 0x64], ebx
mov edi, dword [esp + 0x3c]
test edi, edi
je 0x1001bba2
mov edi, eax
sub edi, edx
jmp 0x1001bba6
mov edi, dword [esp + 0x68]
mov ebx, dword [esp + 0x40]
add edi, ebx
mov ebx, dword [esp + 0x14]
test ebx, ebx
jle 0x1001bc77
mov eax, ebx
mov dword [esp + 0x70], eax
mov al, byte [edi]
inc edi
mov byte [esp + 0x1c], al
mov al, byte [edi]
inc edi
mov byte [esp + 0x18], al
mov al, byte [edi]
inc edi
mov byte [esp + 0x24], al
mov al, byte [edi]
inc edi
cmp al, 0x7f
jbe 0x1001bc39
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x1c]
and edx, 0xff
and ebx, 0xff
mov byte [ecx], 1
inc ecx
mov eax, dword [edx*4 + 0x1008c2d8]
mov edx, dword [ebx*4 + 0x1008cad8]
add eax, edx
mov edx, dword [esp + 0x18]
and edx, 0xff
mov ebx, dword [edx*4 + 0x1008c6d8]
add eax, ebx
mov ebx, dword [esp + 0x2c]
mov edx, eax
shr edx, 0x10
and edx, 0xff
add ebx, edx
mov edx, dword [esp + 0x28]
inc edx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x10]
jmp 0x1001bc52
mov byte [ecx], 0
mov eax, dword [0x1008ccd8]
mov ebx, dword [0x1008c8d8]
inc ecx
add eax, ebx
mov ebx, dword [0x1008c4d8]
add eax, ebx
mov byte [esi], al
mov ebx, eax
inc esi
shr ebx, 8
shr eax, 0x10
mov byte [esi], bl
mov byte [ebp], al
mov eax, dword [esp + 0x70]
inc esi
inc ebp
dec eax
mov dword [esp + 0x70], eax
jne 0x1001bbbe
mov eax, dword [esp + 0x6c]
mov edi, dword [esp + 0x68]
mov ebx, dword [esp + 0x74]
add edi, edx
add eax, ebx
mov dword [esp + 0x68], edi
mov edi, dword [esp + 0x64]
dec edi
mov dword [esp + 0x6c], eax
mov dword [esp + 0x64], edi
jne 0x1001bb94
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
mov edx, dword [esp + 0x80]
mov eax, dword [ecx + 8]
add esi, eax
mov eax, dword [esp + 0x7c]
push esi
push edx
push eax
call fcn.1001cbe0
add esp, 0xc
test eax, eax
jne 0x1001c233
mov eax, 2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
cmp dword [edi], 0
je 0x1001bdf5
mov eax, ebx
xor edx, edx
imul eax, dword [esp + 0x14]
div dword [0x1008c250]
push 1
push 0xc00
mov dword [esp + 0x58], eax
call fcn.10040c80
mov ebp, eax
add esp, 8
test ebp, ebp
jne 0x1001bd10
mov eax, 6
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
test ebx, ebx
jle 0x1001bdc3
mov edx, dword [esp + 0x10]
mov dword [esp + 0x68], 0
mov eax, edx
mov ecx, edx
neg eax
imul ecx, ebx
mov dword [esp + 0x74], eax
mov dword [esp + 0x70], ecx
mov dword [esp + 0x6c], ebx
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x1001bd47
mov eax, ecx
sub eax, edx
jmp 0x1001bd4b
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x40]
add eax, edx
mov edx, dword [esp + 0x14]
test edx, edx
jle 0x1001bd9c
xor ecx, ecx
mov cl, byte [eax]
inc dword [ebp + ecx*4 + 0x800]
inc eax
lea ecx, [ebp + ecx*4 + 0x800]
xor ecx, ecx
mov cl, byte [eax]
inc dword [ebp + ecx*4 + 0x400]
inc eax
lea ecx, [ebp + ecx*4 + 0x400]
add eax, 2
xor ecx, ecx
mov cl, byte [eax - 2]
inc dword [ebp + ecx*4]
dec edx
lea ecx, [ebp + ecx*4]
jne 0x1001bd59
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x70]
jmp 0x1001bda0
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x68]
add eax, edx
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x74]
add ecx, eax
mov eax, dword [esp + 0x6c]
dec eax
mov dword [esp + 0x70], ecx
mov dword [esp + 0x6c], eax
jne 0x1001bd39
mov eax, dword [esp + 0x50]
lea edx, [edi + 0xc]
push edx
push ebp
push eax
call fcn.100c7e1f
add esp, 0xc
test eax, eax
jne 0x1001bde6
mov eax, 2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
push ebp
mov dword [edi], 0
call fcn.10040cb0
add esp, 4
mov eax, dword [edi + 4]
test eax, eax
je 0x1001c01d
mov eax, dword [esp + 0x30]
mov dl, byte [edi + 0xe]
imul eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x38]
mov byte [esp + 0x50], dl
mov dl, byte [edi + 0x11]
mov ebx, dword [ecx + 8]
mov byte [esp + 0x48], dl
mov dl, byte [edi + 0x10]
mov cl, byte [edi + 0xf]
shl eax, 1
mov ebp, eax
mov byte [esp + 0x44], dl
mov dl, byte [edi + 0x12]
add ebp, ebx
mov bl, byte [edi + 0x13]
mov byte [esp + 0x58], dl
mov byte [esp + 0x5c], bl
and ebx, 0xff
and edx, 0xff
mov byte [esp + 0x54], cl
add ebx, edx
mov edx, dword [esp + 0x44]
sar ebx, 1
mov byte [edi + 0x1a], bl
mov ebx, dword [esp + 0x48]
and edx, 0xff
and ebx, 0xff
add edx, ebx
and ecx, 0xff
sar edx, 1
mov byte [edi + 0x19], dl
mov edx, dword [esp + 0x50]
and edx, 0xff
mov dword [esp + 0x34], eax
add ecx, edx
sar ecx, 1
mov byte [edi + 0x18], cl
mov ecx, dword [esp + 0x30]
test ecx, ecx
jle 0x1001bfe2
mov edx, dword [esp + 0x10]
mov dword [esp + 0x68], 0
mov ecx, edx
mov edi, edx
neg ecx
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x30]
imul edi, ecx
mov dword [esp + 0x64], edi
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x1001beca
mov ecx, dword [esp + 0x64]
sub ecx, edx
jmp 0x1001bece
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x40]
add ecx, edi
mov edi, dword [esp + 0x14]
test edi, edi
jle 0x1001bfbb
mov al, byte [ecx]
mov dl, byte [ecx + 1]
inc ecx
mov byte [esp + 0x1c], al
inc ecx
mov byte [esp + 0x18], dl
mov bl, byte [ecx]
add ecx, 2
mov byte [esp + 0x24], bl
mov bl, byte [esp + 0x50]
cmp al, bl
jb 0x1001bf40
cmp al, byte [esp + 0x54]
ja 0x1001bf40
cmp dl, byte [esp + 0x44]
jb 0x1001bf40
cmp dl, byte [esp + 0x48]
ja 0x1001bf40
mov al, byte [esp + 0x24]
mov dl, byte [esp + 0x58]
cmp al, dl
jb 0x1001bf40
cmp al, byte [esp + 0x5c]
ja 0x1001bf40
mov byte [ebp], 0
mov eax, dword [0x1008ccd8]
mov edx, dword [0x1008c8d8]
inc ebp
add eax, edx
mov edx, dword [0x1008c4d8]
add eax, edx
jmp 0x1001bf93
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x24]
and edx, 0xff
mov byte [ebp], 1
and eax, 0xff
inc ebp
mov ebx, dword [edx*4 + 0x1008cad8]
mov edx, dword [esp + 0x18]
mov eax, dword [eax*4 + 0x1008c2d8]
and edx, 0xff
add eax, ebx
mov ebx, dword [edx*4 + 0x1008c6d8]
add eax, ebx
mov ebx, dword [esp + 0x2c]
mov edx, eax
shr edx, 0x10
add ebx, edx
mov edx, dword [esp + 0x28]
inc edx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], edx
mov byte [esi], al
mov edx, eax
inc esi
shr edx, 8
mov byte [esi], dl
mov edx, dword [esp + 0x20]
shr eax, 0x10
inc esi
mov byte [edx], al
inc edx
dec edi
mov dword [esp + 0x20], edx
jne 0x1001bee0
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x74]
mov edi, dword [esp + 0x64]
mov ebx, dword [esp + 0x68]
add edi, ecx
mov ecx, dword [esp + 0x70]
add ebx, edx
dec ecx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x64], edi
mov dword [esp + 0x70], ecx
jne 0x1001beba
mov edx, dword [esp + 0x38]
add eax, dword [edx + 8]
mov esi, eax
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x7c]
push esi
push eax
push ecx
call fcn.1001cbe0
add esp, 0xc
test eax, eax
jne 0x1001c233
mov dword [esp + 0x4c], 2
mov eax, dword [esp + 0x4c]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
mov eax, ebx
mov edx, dword [esp + 0x38]
imul eax, dword [esp + 0x14]
mov edi, dword [edx + 8]
mov ecx, dword [esp + 0x7c]
shl eax, 1
mov dword [esp + 0x34], eax
add eax, edi
mov dword [esp + 0x50], eax
push eax
mov eax, dword [esp + 0x84]
push eax
push ecx
call fcn.1001cc80
add esp, 0xc
test eax, eax
jne 0x1001c05e
mov eax, 2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret
test ebx, ebx
jle 0x1001c185
mov edx, dword [esp + 0x10]
mov ebp, dword [esp + 0x20]
mov eax, edx
mov dword [esp + 0x68], 0
neg eax
mov dword [esp + 0x74], eax
mov eax, edx
imul eax, ebx
mov dword [esp + 0x70], eax
mov dword [esp + 0x6c], ebx
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x1001c099
mov ecx, eax
sub ecx, edx
jmp 0x1001c09d
mov ecx, dword [esp + 0x68]
mov edi, dword [esp + 0x40]
add ecx, edi
mov edi, dword [esp + 0x14]
test edi, edi
jle 0x1001c162
mov al, byte [ecx]
inc ecx
mov byte [esp + 0x1c], al
mov al, byte [ecx]
inc ecx
mov byte [esp + 0x18], al
mov al, byte [ecx]
add ecx, 2
mov byte [esp + 0x24], al
mov eax, dword [esp + 0x50]
mov bl, byte [eax]
inc eax
test bl, bl
mov dword [esp + 0x50], eax
jne 0x1001c0ec
mov eax, dword [0x1008ccd8]
mov ebx, dword [0x1008c8d8]
add eax, ebx
mov ebx, dword [0x1008c4d8]
add eax, ebx
jmp 0x1001c145
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x1c]
and edx, 0xff
and ebx, 0xff
mov eax, dword [edx*4 + 0x1008c2d8]
mov edx, dword [ebx*4 + 0x1008cad8]
add eax, edx
mov edx, dword [esp + 0x18]
and edx, 0xff
mov ebx, dword [edx*4 + 0x1008c6d8]
add eax, ebx
mov ebx, dword [esp + 0x2c]
mov edx, eax
shr edx, 0x10
and edx, 0xff
add ebx, edx
mov edx, dword [esp + 0x28]
inc edx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x10]
mov byte [esi], al
mov ebx, eax
inc esi
shr ebx, 8
shr eax, 0x10
mov byte [esi], bl
inc esi
mov byte [ebp], al
inc ebp
dec edi
jne 0x1001c0af
mov eax, dword [esp + 0x70]
mov ebx, dword [esp + 0x68]
mov edi, dword [esp + 0x74]
mov ecx, dword [esp + 0x6c]
add ebx, edx
add eax, edi
dec ecx
mov dword [esp + 0x68], ebx
mov dword [esp + 0x70], eax
mov dword [esp + 0x6c], ecx
jne 0x1001c08b
mov eax, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
add esi, dword [eax + 8]
jmp 0x1001c233
test ebx, ebx
jle case.0x1001aa5a.10
mov eax, dword [esp + 0x10]
xor ecx, ecx
mov edx, eax
mov ebp, eax
neg edx
imul ebp, ebx
mov dword [esp + 0x6c], ebx
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], edx
mov edi, dword [esp + 0x3c]
test edi, edi
je 0x1001c1c8
mov ecx, ebp
sub ecx, eax
mov edi, dword [esp + 0x40]
add ecx, edi
mov edi, dword [esp + 0x14]
test edi, edi
jle 0x1001c218
xor edx, edx
mov dl, byte [ecx]
inc ecx
mov eax, dword [edx*4 + 0x1008cad8]
xor edx, edx
mov dl, byte [ecx]
add eax, dword [edx*4 + 0x1008c6d8]
inc ecx
xor edx, edx
mov dl, byte [ecx]
add eax, dword [edx*4 + 0x1008c2d8]
add ecx, 2
mov byte [esi], al
mov edx, eax
inc esi
shr edx, 8
shr eax, 0x10
mov byte [esi], dl
inc esi
mov byte [ebx], al
inc ebx
dec edi
jne 0x1001c1d6
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x74]
mov ecx, dword [esp + 0x70]
mov edi, dword [esp + 0x6c]
add ecx, eax
add ebp, edx
dec edi
mov dword [esp + 0x70], ecx
mov dword [esp + 0x6c], edi
jne 0x1001c1bc
mov esi, dword [esp + 0x50]
mov ebx, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
xor edx, edx
mov ebp, dword [esp + 0x7c]
lea ecx, [ebx + 1]
div ecx
mov edi, dword [ebp + 0xd0]
mov ecx, dword [edi + 4]
mov edx, ecx
sub edx, eax
jns 0x1001c259
mov edx, eax
sub edx, ecx
cmp edx, 0x18
jl 0x1001c273
mov edx, dword [esp + 0x30]
imul edx, dword [esp + 0x14]
sar edx, 6
cmp ebx, edx
jb 0x1001c273
mov dword [edi + 4], eax
jmp 0x1001c275
mov eax, ecx
mov edx, dword [esp + 0x84]
push eax
mov eax, dword [esp + 0x84]
push esi
push edx
push eax
push ebp
call fcn.1001c5c0
mov eax, dword [esp + 0x60]
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret