Function at 0x1003df00
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x168
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
mov dword [ebp - 0x14], 0x10041db0
mov esi, ecx
call 0x1003df24
pop eax
mov dword [ebp - 0x100], edx
lea edx, [ebp - 0x18]
mov ecx, dword fs:[0]
mov dword [ebp - 0x104], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], edx
cmp dword [eax], 0
je 0x1003df5f
lea ecx, [ebp - 0x114]
push eax
push ecx
call fcn.10178120
add esp, 8
jmp 0x1003df69
mov dword [ebp - 0x114], 0
mov eax, dword [esi]
mov ecx, dword [esi + 8]
mov dword [ebp - 0x140], 0xa
xor esi, esi
mov dword [ebp - 0x8c], 0
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0xd0], 0
mov dword [ebp - 0x13c], eax
mov eax, dword [ebp + 8]
mov dword [ebp - 0x138], ecx
mov dword [ebp - 0x134], 0
mov dword [ebp - 0x130], ecx
mov dword [ebp - 0x12c], 1
mov dword [ebp - 0x128], 0xa
mov dword [ebp - 0x124], 0
mov dword [ebp - 0x120], ecx
mov word [ebp - 0x11c], 0
mov dword [ebp - 0x118], 0
mov ecx, dword [eax]
mov eax, dword [eax + 8]
mov dword [ebp - 0x150], eax
lea eax, [eax*4]
add ecx, 8
lea eax, [eax + eax*2]
mov dword [ebp - 0x14c], ecx
mov dword [ebp - 0x148], eax
mov eax, dword [ebp - 0x100]
mov ecx, dword [eax + 0xc]
mov dword [ebp - 0x158], ecx
lea ecx, [eax + 0x10]
mov dword [ebp - 0x154], ecx
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [ebp - 0x15c], ecx
add ecx, 0xfffffff0
mov dword [ebp - 0x108], eax
mov dword [ebp - 0xfc], ecx
nop word cs:[eax + eax]
nop dword [eax + eax]
cmp byte [ebp - 0x11b], 0
jne 0x1003fc86
mov eax, dword [ebp - 0x13c]
lea ecx, [ebp - 0xcc]
lea edx, [ebp - 0x140]
mov dword [ebp - 0x44], esi
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x24], eax
call fcn.1003cde0
cmp dword [ebp - 0xcc], 0
je 0x1003e0b0
mov ecx, dword [ebp - 0x124]
mov eax, dword [ebp - 0xc4]
add dword [ebp - 0x24], ecx
mov dword [ebp - 0x124], eax
sub eax, ecx
xor edi, edi
test eax, eax
jne 0x1003e0f2
jmp 0x1003e122
cmp byte [ebp - 0x11b], 0
jne 0x1003fc86
mov byte [ebp - 0x11b], 1
cmp byte [ebp - 0x11c], 0
mov ecx, dword [ebp - 0x124]
mov eax, dword [ebp - 0x120]
jne 0x1003e0e1
cmp eax, ecx
je 0x1003fc86
sub eax, ecx
add ecx, dword [ebp - 0x13c]
mov dword [ebp - 0x24], ecx
xor edi, edi
test eax, eax
je 0x1003e122
mov ecx, dword [ebp - 0x24]
cmp byte [ecx + eax - 1], 0xa
jne 0x1003e120
mov ecx, eax
dec ecx
je 0x1003e122
mov esi, dword [ebp - 0x24]
lea edx, [eax - 2]
cmp byte [esi + eax - 2], 0xd
cmove ecx, edx
mov edi, ecx
jmp 0x1003e122
mov edi, eax
mov eax, dword [ebp - 0x118]
add edi, dword [ebp - 0x24]
lea esi, [ebp - 0x5c]
mov dword [ebp - 0x5c], 1
mov dword [ebp - 0x58], 0
mov dword [ebp - 0xcc], 1
mov dword [ebp - 0xc8], 0
mov dword [ebp - 0x54], 0
mov dword [ebp - 0xc4], 0
mov dword [ebp - 0x4c], eax
inc eax
mov dword [ebp - 0x7c], edi
mov dword [ebp - 0x118], eax
mov eax, 0x110001
jmp 0x1003e1a2
cmp byte [ebp - 0x44], 0
je 0x1003e25f
cmp ecx, 0x7d
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x24], ebx
setne al
mov dword [ebp - 0x44], eax
mov eax, 0x110001
cmp eax, 0x110001
jne 0x1003e210
mov ebx, dword [ebp - 0x24]
cmp ebx, edi
je 0x1003e800
movzx eax, byte [ebx]
movzx ecx, al
test al, al
js 0x1003e1c1
inc ebx
jmp 0x1003e220
movzx edx, byte [ebx + 1]
and ecx, 0x1f
and edx, 0x3f
cmp al, 0xdf
jbe 0x1003e327
mov edi, esi
mov esi, ecx
movzx ecx, byte [ebx + 2]
shl edx, 6
and ecx, 0x3f
or ecx, edx
cmp al, 0xf0
jb 0x1003e377
movzx eax, byte [ebx + 3]
and esi, 7
shl ecx, 6
add ebx, 4
shl esi, 0x12
mov dword [ebp - 0x24], ebx
and eax, 0x3f
or eax, ecx
or eax, esi
mov esi, edi
mov edi, dword [ebp - 0x7c]
nop word [eax + eax]
mov ebx, dword [ebp - 0x24]
cmp eax, 0x110000
mov ecx, eax
je 0x1003e800
cmp byte [ebp - 0x3c], 0
je 0x1003e180
mov al, 1
cmp ecx, 0x2a
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x3c], eax
mov eax, 0x110001
jne 0x1003e1a2
cmp ebx, edi
mov dword [ebp - 0x24], edi
je 0x1003e1a2
movzx edx, byte [ebx]
movzx eax, dl
test dl, dl
js 0x1003e334
inc ebx
jmp 0x1003e412
lea eax, [ecx - 9]
mov dword [ebp - 0x2c], ecx
cmp eax, 0x26
ja 0x1003e38b
mov eax, dword [eax*4 + 0x100400e4]
add eax, dword [ebp - 0x104]
jmp eax
shl ecx, 6
add ebx, 2
or ecx, edx
jmp 0x1003e220
mov dword [ebp - 0x28], esi
movzx esi, byte [ebx + 1]
and eax, 0x1f
and esi, 0x3f
cmp dl, 0xdf
jbe 0x1003e3c5
movzx ecx, byte [ebx + 2]
shl esi, 6
and ecx, 0x3f
or ecx, esi
cmp dl, 0xf0
jb 0x1003e407
movzx edx, byte [ebx + 3]
and eax, 7
shl ecx, 6
add ebx, 4
shl eax, 0x12
and edx, 0x3f
or edx, ecx
or eax, edx
jmp 0x1003e40f
shl esi, 0xc
add ebx, 3
or esi, ecx
mov ecx, esi
mov esi, edi
mov edi, dword [ebp - 0x7c]
jmp 0x1003e220
cmp ecx, 0x7b
jne 0x1003e3cf
mov cl, 1
mov eax, 0x110000
cmp ebx, edi
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x44], ecx
je 0x1003e1a2
movzx edx, byte [ebx]
movzx ecx, dl
test dl, dl
js 0x1003e4fa
inc ebx
mov edx, ecx
mov dword [ebp - 0x24], ebx
jmp 0x1003e70b
shl eax, 6
add ebx, 2
or eax, esi
jmp 0x1003e40f
cmp ecx, 0x7f
ja 0x1003e428
mov dword [ebp - 0x48], 0x110001
mov dword [ebp - 0x24], ebx
jmp 0x1003e724
shl eax, 0xc
add ebx, 3
or eax, ecx
mov esi, dword [ebp - 0x28]
mov dword [ebp - 0x24], ebx
cmp eax, 0x2f
setne al
mov dword [ebp - 0x3c], eax
mov eax, 0x110001
jmp 0x1003e1a2
mov eax, ecx
cmp ecx, 0x800
mov dword [ebp - 0xdc], 0
jae 0x1003e465
shr eax, 6
and cl, 0x3f
or al, 0xc0
or cl, 0x80
mov byte [ebp - 0xdc], al
mov byte [ebp - 0xdb], cl
mov ecx, 2
jmp 0x1003e597
cmp ecx, 0x10000
jae 0x1003e55d
shr eax, 0xc
or al, 0xe0
mov byte [ebp - 0xdc], al
mov eax, ecx
and cl, 0x3f
shr eax, 6
or cl, 0x80
and al, 0x3f
or al, 0x80
mov byte [ebp - 0xdb], al
mov byte [ebp - 0xda], cl
mov ecx, 3
jmp 0x1003e597
movzx edi, byte [ebx + 1]
and ecx, 0x1f
and edi, 0x3f
cmp dl, 0xdf
jbe 0x1003e620
mov dword [ebp - 0x28], esi
movzx esi, byte [ebx + 2]
shl edi, 6
and esi, 0x3f
or esi, edi
cmp dl, 0xf0
jb 0x1003e6f8
movzx edx, byte [ebx + 3]
shl esi, 6
and ecx, 7
mov edi, dword [ebp - 0x7c]
add ebx, 4
mov dword [ebp - 0x3c], 0
shl ecx, 0x12
mov dword [ebp - 0x24], ebx
and edx, 0x3f
or edx, esi
mov esi, dword [ebp - 0x28]
or edx, ecx
cmp edx, 0x110000
je 0x1003e1a2
jmp 0x1003e70b
shr eax, 0x12
or al, 0xf0
mov byte [ebp - 0xdc], al
mov eax, ecx
shr eax, 0xc
and al, 0x3f
or al, 0x80
mov byte [ebp - 0xdb], al
mov eax, ecx
and cl, 0x3f
shr eax, 6
or cl, 0x80
and al, 0x3f
or al, 0x80
mov byte [ebp - 0xda], al
mov byte [ebp - 0xd9], cl
mov ecx, 4
mov edx, esi
mov eax, dword [esi + 4]
mov esi, dword [esi + 8]
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 0x28], edx
sub eax, esi
cmp eax, ecx
jae 0x1003e5d3
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x35], 1
mov dword [ebp - 0x10], 0x12
push ecx
push esi
push edx
call fcn.101a9310
add esp, 0xc
mov edx, dword [ebp - 0x28]
mov edi, dword [ebp - 0x7c]
mov ebx, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x3c]
mov esi, dword [edx + 8]
mov eax, dword [edx]
add eax, esi
push ecx
lea ecx, [ebp - 0xdc]
push ecx
push eax
call fcn.10193640
add esp, 0xc
add esi, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x28]
mov eax, 0x110001
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x3c], 0
mov dword [ebp - 0x24], ebx
mov dword [ecx + 8], esi
mov esi, ecx
jmp 0x1003e1a2
shl ecx, 6
add ebx, 2
or ecx, edi
mov edi, dword [ebp - 0x7c]
mov dword [ebp - 0x24], ebx
mov edx, ecx
jmp 0x1003e70b
shl ecx, 0xc
mov edi, dword [ebp - 0x7c]
add ebx, 3
or esi, ecx
mov dword [ebp - 0x24], ebx
mov edx, esi
mov esi, dword [ebp - 0x28]
cmp edx, 0x24
mov eax, edx
mov dword [ebp - 0x48], 0x24
mov dword [ebp - 0x3c], 0
jne 0x1003e1a2
mov eax, dword [esi + 8]
cmp eax, dword [esi + 4]
jne 0x1003e74d
mov byte [ebp - 0x35], 1
mov dword [ebp - 0x10], 0x12
push eax
push esi
mov dword [ebp - 0x28], esi
call fcn.10006450
add esp, 8
mov esi, dword [ebp - 0x28]
mov edi, dword [ebp - 0x7c]
mov eax, dword [esi + 8]
mov ecx, dword [esi]
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x3c], 0
mov byte [ecx + eax], dl
inc dword [esi + 8]
mov eax, dword [ebp - 0x48]
jmp 0x1003e1a2
mov eax, dword [ebp - 0x5c]
mov dword [ebp - 0x60], eax
mov eax, dword [ebp - 0x58]
mov dword [ebp - 0x48], eax
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x34], eax
push dword [ebp - 0xc4]
push dword [ebp - 0xcc]
call fcn.10052af0
add esp, 8
mov ebx, eax
mov esi, edx
test edx, edx
je 0x1003e850
js 0x1003fcda
push 1
push esi
call fcn.100985b0
add esp, 8
mov edi, eax
test eax, eax
jne 0x1003e855
jmp 0x1003fceb
mov edi, 1
push esi
push ebx
push edi
call fcn.10193640
add esp, 0xc
mov eax, dword [ebp - 0xc8]
test eax, eax
je 0x1003e87b
push 1
push eax
push dword [ebp - 0xcc]
call fcn.100985c0
add esp, 0xc
mov ebx, dword [ebp - 0x34]
mov dword [ebp - 0x6c], edi
mov dword [ebp - 0x68], esi
mov dword [ebp - 0x64], esi
test ebx, ebx
je 0x1003e970
cmp ebx, 3
jne 0x1003e990
mov ecx, dword [ebp - 0x60]
movzx eax, word [ecx]
movzx ecx, byte [ecx + 2]
xor eax, 0x2f2f
xor ecx, 0x2f
or cx, ax
jne 0x1003e998
mov eax, dword [ebp - 0x8c]
test eax, eax
je 0x1003eac5
mov ecx, dword [ebp - 0x88]
mov esi, dword [ebp - 0x84]
cmp ecx, esi
jne 0x1003e900
mov byte [ebp - 0x2d], 1
mov dword [ebp - 0x10], 1
push 1
push esi
lea eax, [ebp - 0x8c]
push eax
call fcn.101a9310
add esp, 0xc
mov esi, dword [ebp - 0x84]
mov eax, dword [ebp - 0x8c]
mov ecx, dword [ebp - 0x88]
mov byte [eax + esi], 0xa
inc esi
mov edi, dword [ebp - 0x64]
mov edx, dword [ebp - 0x6c]
sub ecx, esi
mov dword [ebp - 0x84], esi
cmp ecx, edi
jae 0x1003e94b
mov dword [ebp - 0x2c], edx
mov byte [ebp - 0x2d], 1
mov dword [ebp - 0x10], 1
mov dword [ebp - 0x24], edi
push edi
push esi
lea eax, [ebp - 0x8c]
push eax
call fcn.101a9310
add esp, 0xc
mov eax, dword [ebp - 0x8c]
mov esi, dword [ebp - 0x84]
mov edi, dword [ebp - 0x24]
mov edx, dword [ebp - 0x2c]
add eax, esi
push edi
push edx
push eax
call fcn.10193640
add esp, 0xc
add esi, edi
mov dword [ebp - 0x84], esi
jmp 0x1003eaff
mov bl, 1
mov eax, dword [ebp - 0x48]
test esi, esi
jne 0x1003f105
jmp 0x1003f116
test ebx, ebx
js 0x1003fd1d
push 1
push ebx
call fcn.100985b0
add esp, 8
test eax, eax
je 0x1003fd02
mov esi, eax
mov edi, eax
push ebx
push dword [ebp - 0x60]
push esi
call fcn.10193640
add esp, 0xc
cmp ebx, 8
mov ecx, esi
jb 0x1003eb10
xor eax, eax
cmp ebx, 0x20
jb 0x1003ea63
movdqa xmm5, xmmword [0x101b1040]
movdqa xmm6, xmmword [0x101b1050]
movdqa xmm7, xmmword [0x101b1060]
mov eax, ebx
lea ecx, [esi + 0x10]
and eax, 0xffffffe0
mov edx, eax
nop word cs:[eax + eax]
nop
movdqu xmm1, xmmword [ecx - 0x10]
movdqu xmm0, xmmword [ecx]
movdqa xmm2, xmm1
movdqa xmm3, xmm0
paddb xmm2, xmm5
paddb xmm3, xmm5
movdqa xmm4, xmm2
pminub xmm4, xmm6
pcmpeqb xmm4, xmm2
movdqa xmm2, xmm3
pminub xmm2, xmm6
pand xmm4, xmm7
pcmpeqb xmm2, xmm3
por xmm4, xmm1
pand xmm2, xmm7
movdqu xmmword [ecx - 0x10], xmm4
por xmm2, xmm0
movdqu xmmword [ecx], xmm2
add ecx, 0x20
add edx, 0xffffffe0
jne 0x1003ea00
cmp ebx, eax
je 0x1003eb3a
test bl, 0x18
je 0x1003eb06
movdqa xmm3, xmmword [0x101b1070]
movdqa xmm4, xmmword [0x101b1080]
movdqa xmm5, xmmword [0x101b1090]
mov edx, ebx
lea ebx, [esi + eax]
and edx, 0xfffffff8
lea ecx, [esi + edx]
sub eax, edx
nop dword [eax + eax]
movq xmm0, qword [ebx]
movdqa xmm1, xmm0
paddb xmm1, xmm3
movdqa xmm2, xmm1
pmaxub xmm2, xmm4
pcmpeqb xmm2, xmm1
pandn xmm2, xmm5
por xmm2, xmm0
movq qword [ebx], xmm2
add ebx, 8
add eax, 8
jne 0x1003ea90
mov ebx, dword [ebp - 0x34]
cmp ebx, edx
jne 0x1003eb10
jmp 0x1003eb3a
lea eax, [ebp - 0x6c]
mov byte [ebp - 0x2d], 1
mov dword [ebp - 0x10], 1
push eax
lea eax, [ebp - 0xcc]
push eax
call fcn.10178120
add esp, 8
mov eax, dword [ebp - 0xc4]
movq xmm0, qword [ebp - 0xcc]
mov dword [ebp - 0x84], eax
movq qword [ebp - 0x8c], xmm0
mov bl, 1
jmp 0x1003f0fb
add eax, esi
mov ecx, eax
nop word [eax + eax]
add esi, ebx
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, byte [ecx]
mov edx, eax
add dl, 0xbf
cmp dl, 0x1a
setb dl
shl dl, 5
or dl, al
mov byte [ecx], dl
inc ecx
cmp ecx, esi
jne 0x1003eb20
cmp dword [ebp - 0x158], 0
mov al, 1
mov dword [ebp - 0xe8], edi
mov dword [ebp - 0xe4], ebx
mov dword [ebp - 0xe0], ebx
je 0x1003ec83
mov dword [ebp - 0x40], eax
lea eax, [ebp - 0xe8]
mov byte [ebp - 0x1d], 1
mov dword [ebp - 0x10], 2
push eax
push dword [ebp - 0x154]
call fcn.10092ce0
add esp, 8
mov edx, eax
shr eax, 0x19
mov ebx, dword [ebp - 0xe0]
mov dword [ebp - 0x28], 0
movd xmm0, eax
mov eax, dword [ebp - 0xe8]
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
mov dword [ebp - 0x2c], ebx
movdqu xmmword [ebp - 0xf8], xmm0
mov dword [ebp - 0x24], eax
and edx, dword [ebp - 0x108]
mov eax, dword [ebp - 0x15c]
movdqu xmm0, xmmword [ebp - 0xf8]
movdqu xmm1, xmmword [eax + edx]
pcmpeqb xmm0, xmm1
movdqu xmmword [ebp - 0x7c], xmm1
pmovmskb edi, xmm0
test edi, edi
jne 0x1003ec1a
movdqu xmm1, xmmword [ebp - 0x7c]
pcmpeqd xmm0, xmm0
pcmpeqb xmm1, xmm0
pmovmskb eax, xmm1
test eax, eax
jne 0x1003ecb4
mov eax, dword [ebp - 0x28]
lea edx, [edx + eax + 0x10]
add eax, 0x10
mov dword [ebp - 0x28], eax
jmp 0x1003ebb6
lea eax, [edi - 1]
and ax, di
mov edi, eax
je 0x1003ebe0
tzcnt esi, edi
mov eax, dword [ebp - 0xfc]
add esi, edx
and esi, dword [ebp - 0x108]
mov ecx, esi
shl ecx, 4
sub eax, ecx
cmp ebx, dword [eax + 8]
jne 0x1003ec10
push ebx
push dword [eax]
push dword [ebp - 0x24]
mov ebx, edx
call fcn.10193bb4
mov edx, ebx
mov ebx, dword [ebp - 0x2c]
add esp, 0xc
test eax, eax
jne 0x1003ec10
mov eax, dword [ebp - 0xfc]
neg esi
shl esi, 4
mov eax, dword [eax + esi + 0xc]
cmp eax, 0x45
je 0x1003ec6a
cmp eax, 0x2b
jne 0x1003ec94
mov edx, dword [ebp + 0x14]
cmp dword [ebp + 0x1c], 0
mov ecx, dword [ebp - 0x4c]
cmovne ecx, dword [ebp + 0x20]
mov edi, dword [edx + 8]
mov dword [ebp - 0x4c], ecx
jmp 0x1003ed03
xor esi, esi
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x8c]
test eax, eax
jne 0x1003ecc3
jmp 0x1003ecd9
mov eax, dword [ebp - 0xfc]
mov ebx, dword [ebp - 0x34]
mov dword [ebp - 0x40], 0
lea esi, [eax + esi + 0xc]
mov eax, dword [ebp - 0x8c]
test eax, eax
jne 0x1003ecc3
jmp 0x1003ecd9
mov ebx, dword [ebp - 0x34]
xor esi, esi
mov eax, dword [ebp - 0x8c]
test eax, eax
je 0x1003ecd9
mov ecx, dword [ebp - 0x88]
test ecx, ecx
je 0x1003ecd9
push 1
push ecx
push eax
call fcn.100985c0
add esp, 0xc
mov ecx, dword [ebp + 0x14]
cmp dword [ebp + 0x1c], 0
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x8c], 0
cmovne eax, dword [ebp + 0x20]
cmp byte [ebp - 0x40], 0
mov edi, dword [ecx + 8]
mov dword [ebp - 0x4c], eax
jne 0x1003f2a2
mov eax, dword [esi]
lea ecx, [eax - 1]
xor ebx, ebx
mov dword [ebp - 0x28], edi
cmp ecx, 0x6c
ja 0x1003ed65
mov eax, dword [ecx*4 + 0x10040180]
add eax, dword [ebp - 0x104]
jmp eax
cmp eax, 0xff
jne 0x1003f952
test byte [ebp - 0xd0], 1
jne 0x1003f8a5
mov bl, 1
cmp edi, 2
jb 0x1003f0e0
mov eax, dword [ebp + 0x14]
mov eax, dword [eax]
mov ecx, dword [eax + edi*4 - 4]
test ecx, ecx
je 0x1003f9fa
dec ecx
mov dword [eax + edi*4 - 4], ecx
jmp 0x1003f950
mov eax, dword [ebp - 0xe4]
test eax, eax
je 0x1003f0fb
push 1
push eax
push dword [ebp - 0xe8]
call fcn.100985c0
add esp, 0xc
mov esi, dword [ebp - 0x68]
mov eax, dword [ebp - 0x48]
test esi, esi
je 0x1003f116
push 1
push esi
push dword [ebp - 0x6c]
call fcn.100985c0
mov eax, dword [ebp - 0x48]
add esp, 0xc
mov esi, dword [ebp - 0x44]
test bl, bl
je 0x1003e050
test eax, eax
je 0x1003e050
push 1
push eax
push dword [ebp - 0x60]
call fcn.100985c0
add esp, 0xc
jmp 0x1003e050
test byte [ebp - 0xd0], 1
mov dword [ebp - 0x28], edi
jne 0x1003f41b
cmp dword [ebp - 0x150], 0
je 0x1003f950
mov eax, dword [ebp - 0xe8]
mov edi, dword [ebp - 0xe0]
mov ebx, dword [ebp - 0x148]
mov esi, dword [ebp - 0x14c]
mov dword [ebp - 0x24], eax
jmp 0x1003f2ec
add esi, 0xc
add ebx, 0xfffffff4
je 0x1003f950
cmp dword [esi], edi
jne 0x1003f2e0
push edi
push dword [ebp - 0x24]
push dword [esi - 8]
call fcn.10193bb4
add esp, 0xc
test eax, eax
jne 0x1003f2e0
mov eax, dword [ebp - 0x64]
mov edx, dword [ebp - 0x6c]
mov byte [ebp - 0x1d], 1
mov dword [ebp - 0x10], 2
lea ecx, [ebp - 0x5c]
push eax
call fcn.100419a0
add esp, 4
mov edx, dword [ebp - 0x54]
mov eax, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x58]
lea esi, [edx + edx*2]
test edx, edx
mov dword [ebp - 0xcc], eax
mov dword [ebp - 0xc8], ecx
mov dword [ebp - 0xc4], eax
lea esi, [eax + esi*4]
mov dword [ebp - 0xc0], esi
jmp 0x1003f357
mov eax, dword [ebp - 0xc4]
cmp eax, dword [ebp - 0xc0]
mov esi, dword [ebp - 0x34]
mov edi, dword [ebp - 0x28]
je 0x1003f9ce
lea ecx, [eax + 0xc]
mov dword [ebp - 0xc4], ecx
mov ecx, dword [eax]
test ecx, ecx
je 0x1003f9ce
mov edx, dword [eax + 4]
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x24], edx
mov edx, dword [eax + 8]
mov dword [ebp - 0x10], 0xd
push esi
push dword [ebp - 0x60]
push edi
push dword [ebp - 0x4c]
push dword [ebp + 0x18]
call fcn.100417f0
add esp, 0x14
mov eax, dword [ebp - 0x24]
test eax, eax
je 0x1003f34b
push 1
push eax
push dword [ebp - 0x2c]
call fcn.100985c0
add esp, 0xc
jmp 0x1003f34b
mov ecx, dword [ebp - 0x48]
mov eax, dword [ebp - 0x60]
cmp ecx, ebx
mov dword [ebp - 0xcc], eax
mov dword [ebp - 0xc8], ecx
mov dword [ebp - 0xc4], ebx
jne 0x1003f45e
mov dword [ebp - 0x10], 0x11
push 1
push dword [ebp - 0x48]
lea eax, [ebp - 0xcc]
push eax
call fcn.101a9310
add esp, 0xc
mov eax, dword [ebp - 0xcc]
mov ebx, dword [ebp - 0xc4]
mov byte [eax + ebx], 0x20
inc ebx
movq xmm0, qword [ebp - 0xcc]
mov dword [ebp - 0x54], ebx
mov edi, dword [ebp - 0x64]
mov edx, dword [ebp - 0x6c]
movq qword [ebp - 0x5c], xmm0
mov ecx, dword [ebp - 0x58]
mov eax, ecx
sub eax, ebx
cmp eax, edi
jae 0x1003f4db
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x10], 0x10
mov dword [ebp - 0x24], edi
push edi
push ebx
lea eax, [ebp - 0x5c]
push eax
call fcn.101a9310
add esp, 0xc
mov eax, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x54]
mov edi, dword [ebp - 0x24]
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x34], eax
jmp 0x1003f4de
mov dword [ebp - 0x34], ecx
mov esi, dword [ebp - 0x5c]
lea eax, [esi + ebx]
push edi
push edx
push eax
call fcn.10193640
add esp, 0xc
add ebx, edi
mov dword [ebp - 0x10], 0xe
lea ecx, [ebp - 0xcc]
mov dword [ebp - 0x40], esi
mov edx, esi
push ebx
call fcn.100419a0
add esp, 4
mov eax, dword [ebp - 0xc4]
mov ecx, dword [ebp - 0xcc]
mov esi, dword [ebp - 0x28]
mov dword [ebp - 0xf8], eax
lea eax, [eax*4]
mov dword [ebp - 0x7c], ecx
lea edi, [eax + eax*2]
mov eax, ecx
test edi, edi
je 0x1003f566
lea ecx, [eax + 0xc]
mov edx, dword [eax + 8]
add edi, 0xfffffff4
mov dword [ebp - 0x2c], ecx
mov ecx, dword [eax]
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x10], 0xf
push esi
push dword [ebp - 0x4c]
push dword [ebp + 0x18]
call fcn.10041070
mov edi, dword [ebp - 0x24]
mov esi, dword [ebp - 0x28]
add esp, 0xc
mov eax, dword [ebp - 0x2c]
jmp 0x1003f530
mov ecx, dword [ebp - 0xf8]
test ecx, ecx
je 0x1003f5a0
mov eax, dword [ebp - 0x7c]
lea esi, [eax + 4]
jmp 0x1003f586
add esi, 0xc
dec ecx
je 0x1003f5a0
mov eax, dword [esi]
test eax, eax
je 0x1003f580
push 1
push eax
push dword [esi - 4]
mov edi, ecx
call fcn.100985c0
mov ecx, edi
add esp, 0xc
jmp 0x1003f580
mov eax, dword [ebp - 0xc8]
test eax, eax
je 0x1003f5be
shl eax, 2
lea eax, [eax + eax*2]
push 4
push eax
push dword [ebp - 0x7c]
call fcn.100985c0
add esp, 0xc
mov eax, dword [ebp - 0x34]
mov bl, 1
test eax, eax
je 0x1003f952
push 1
push eax
push dword [ebp - 0x40]
jmp 0x1003f898
call fcn.100985c0
add esp, 0xc
jmp 0x1003f952
mov dword [ebp - 0xd0], 0
jmp 0x1003f950
xor ebx, ebx
mov eax, dword [ebp - 0xe4]
test eax, eax
je 0x1003f96d
push 1
push eax
push dword [ebp - 0xe8]
call fcn.100985c0
add esp, 0xc
mov eax, dword [ebp - 0x68]
test eax, eax
je 0x1003f982
push 1
push eax
push dword [ebp - 0x6c]
call fcn.100985c0
add esp, 0xc
mov ecx, dword [ebp - 0x48]
mov esi, dword [ebp - 0x44]
test ecx, ecx
sete al
or bl, al
jne 0x1003e050
push 1
push ecx
jmp 0x1003f12c
lea eax, [ebp - 0xcc]
mov byte [ebp - 0x1d], 1
mov dword [ebp - 0x10], 2
push eax
call fcn.10025410
add esp, 4
jmp 0x1003f950
mov eax, dword [ebp + 0x18]
mov ecx, dword [eax]
mov eax, dword [eax + 0xc]
movdqa xmm0, xmmword [ecx]
mov dword [ebp - 0x40], eax
lea ebx, [ecx + 0x10]
pmovmskb eax, xmm0
not eax
jmp 0x1003fa29
mov ecx, dword [ebp - 0x34]
mov eax, dword [ebp - 0xf8]
sub dword [ebp - 0x40], 1
jb 0x1003fb6a
test ax, ax
je 0x1003fa50
test ecx, ecx
je 0x1003fb6a
lea edx, [eax - 1]
and edx, eax
mov dword [ebp - 0xf8], edx
jmp 0x1003fa7e
movdqa xmm0, xmmword [ebx]
add ecx, 0xfffffe80
add ebx, 0x10
pmovmskb eax, xmm0
cmp ax, 0xffff
je 0x1003fa50
mov edx, ecx
mov ecx, 0xfffffffe
sub ecx, eax
not eax
mov esi, eax
and esi, ecx
mov ecx, edx
mov dword [ebp - 0xf8], esi
tzcnt eax, eax
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0x7c], ebx
neg eax
lea eax, [eax + eax*2]
mov edx, dword [ecx + eax*8 - 0xc]
imul esi, dword [ecx + eax*8 - 4], 0x38
add esi, edx
mov dword [ebp - 0x2c], esi
jmp 0x1003fac0
mov esi, dword [ebp - 0x4c]
mov dword [edx + ecx*8 - 4], esi
mov esi, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x24]
mov dword [eax + 0x1c], 0
nop word cs:[eax + eax]
nop dword [eax + eax]
cmp edx, esi
je 0x1003fa20
mov eax, edx
add edx, 0x38
cmp dword [eax + 0x1c], edi
jne 0x1003fac0
mov ecx, dword [eax + 0xc]
test ecx, ecx
je 0x1003fac0
mov dword [ebp - 0x24], edx
mov edx, dword [eax + 4]
cmp dword [edx + ecx*8 - 4], 0
je 0x1003fa9d
mov ecx, dword [0x10262078]
mov ecx, dword [ecx]
mov edx, dword [ebp - 0x24]
test ecx, ecx
je 0x1003fac0
add eax, 0x10
mov dword [ebp - 0xcc], 0x101b27dc
mov dword [ebp - 0xc8], 2
mov dword [ebp - 0xbc], 0
mov byte [ebp - 0x1d], 1
mov dword [ebp - 0x10], 2
mov dword [ebp - 0x5c], eax
lea eax, [ebp - 0x5c]
mov dword [ebp - 0x58], 0x100150f0
mov dword [ebp - 0xc4], eax
mov dword [ebp - 0xc0], 1
sub esp, 4
push 0
push 0x101b2808
push 1
lea eax, [ebp - 0xcc]
push eax
call fcn.1015c530
add esp, 0x14
mov edi, dword [ebp - 0x28]
mov ebx, dword [ebp - 0x7c]
mov esi, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x24]
jmp 0x1003fac0
mov eax, dword [ebp + 0x14]
mov edx, dword [eax + 8]
test edx, edx
je 0x1003fb7f
mov ecx, edx
dec ecx
mov dword [ebp - 0x24], ecx
mov dword [eax + 8], ecx
jmp 0x1003fb86
mov dword [ebp - 0x24], 0
mov eax, dword [ebp + 0x18]
mov edi, dword [eax]
mov eax, dword [eax + 0xc]
movdqa xmm0, xmmword [edi]
mov dword [ebp - 0x80], eax
lea ebx, [edi + 0x10]
pmovmskb eax, xmm0
not eax
jmp 0x1003fba3
mov eax, dword [ebp - 0x40]
sub dword [ebp - 0x80], 1
jb 0x1003f950
test ax, ax
je 0x1003fbd0
test edi, edi
je 0x1003f950
lea ecx, [eax - 1]
and ecx, eax
mov dword [ebp - 0x40], ecx
jmp 0x1003fbf7
movdqa xmm0, xmmword [ebx]
add edi, 0xfffffe80
add ebx, 0x10
pmovmskb eax, xmm0
cmp ax, 0xffff
je 0x1003fbd0
mov ecx, 0xfffffffe
sub ecx, eax
not eax
mov edx, eax
and edx, ecx
mov dword [ebp - 0x40], edx
tzcnt eax, eax
mov dword [ebp - 0x34], edi
mov dword [ebp - 0xf8], ebx
neg eax
lea eax, [eax + eax*2]
mov ecx, dword [edi + eax*8 - 0xc]
imul eax, dword [edi + eax*8 - 4], 0x38
add eax, ecx
mov dword [ebp - 0x7c], eax
jmp 0x1003fc44
mov edx, dword [ebp - 0x28]
mov edi, dword [ebp - 0x34]
mov ebx, dword [ebp - 0xf8]
mov eax, dword [edx + 0xc]
mov ecx, dword [edx + 4]
mov esi, edx
mov edx, dword [ebp - 0x4c]
mov dword [ecx + eax*8], edx
mov dword [ecx + eax*8 + 4], 0
inc dword [esi + 0xc]
mov eax, dword [ebp - 0x7c]
mov ecx, dword [ebp - 0x2c]
cmp ecx, eax
je 0x1003fba0
mov esi, dword [ebp - 0x24]
mov edx, ecx
add ecx, 0x38
cmp dword [edx + 0x1c], esi
jne 0x1003fc44
cmp dword [edx], 2
jne 0x1003fc44
mov eax, dword [edx + 0xc]
mov dword [ebp - 0x2c], ecx
cmp eax, dword [edx + 8]
jne 0x1003fc28
lea ecx, [edx + 4]
mov byte [ebp - 0x1d], 1
mov dword [ebp - 0x10], 2
push eax
push ecx
mov dword [ebp - 0x28], edx
call fcn.100062f0
add esp, 8
jmp 0x1003fc19
mov eax, dword [ebp - 0x8c]
test eax, eax
je 0x1003fca6
mov ecx, dword [ebp - 0x88]
test ecx, ecx
je 0x1003fca6
push 1
push ecx
push eax
call fcn.100985c0
add esp, 0xc
mov eax, dword [ebp - 0x114]
test eax, eax
je 0x1003fcc6
mov ecx, dword [ebp - 0x110]
test ecx, ecx
je 0x1003fcc6
push 1
push ecx
push eax
call fcn.100985c0
add esp, 0xc
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
add esp, 0x168
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [ebp - 0x10], 0x13
call fcn.10176df0
jmp 0x1003fdc2
mov dword [ebp - 0x10], 0x13
push esi
push 1
call fcn.101aefe0
add esp, 8
jmp 0x1003fdc2
mov byte [ebp - 0x2d], 1
mov dword [ebp - 0x10], 1
push ebx
push 1
call fcn.101aefe0
add esp, 8
jmp 0x1003fdc2
mov byte [ebp - 0x2d], 1
mov dword [ebp - 0x10], 1
call fcn.10176df0
jmp 0x1003fdc2
ud2