Function at 0x3001d2c0
Capabilities:
Encrypt data using rc4 ksa
Enumerate pe sections

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x42c
mov edx, dword [ebp + 0x10]
push ebx
push esi
mov esi, dword [ebp + 0x18]
lea eax, [esi*8]
sub eax, edx
mov edx, dword [ebp + 0x20]
mov dword [ebp - 0x98], eax
mov eax, dword [ebp + 8]
mov dword [ebp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x18], edx
xor edx, edx
mov eax, 0x10
div dword [ebp + 0x24]
push edi
xor edx, edx
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x8c], 0x3001c300
mov edi, eax
mov eax, esi
div edi
mov dword [ebp - 0x94], eax
xor eax, eax
mov dword [ebp - 4], eax
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0x2c]
test ah, ah
js 0x3001d33b
mov dword [ebp - 0x8c], 0x3001c5e0
mov ecx, dword [ebp + 0x28]
mov edx, dword [ecx]
mov ecx, dword [ebp + 0x10]
mov edi, ecx
shr edi, 3
lea eax, [edi + 0x1ff]
cmp eax, 0x80
mov dword [ebp + 0x20], edi
ja 0x3001d361
movzx edi, byte [edi + 0x3004f5b7]
jmp 0x3001d3a4
cmp eax, 0x800
jb 0x3001d387
cmp eax, 0x2000
jb 0x3001d37b
cmp eax, 0x4000
sbb edi, edi
add edi, 0xf
jmp 0x3001d3a4
cmp eax, 0x1000
sbb edi, edi
add edi, 0xd
jmp 0x3001d3a4
cmp eax, 0x200
jb 0x3001d39a
cmp eax, 0x400
sbb edi, edi
add edi, 0xb
jmp 0x3001d3a4
cmp eax, 0x100
sbb edi, edi
add edi, 9
mov dword [ebp - 0x130], edi
xor edi, edi
mov dword [ebp - 0x12c], edx
mov edx, dword [ebp + 0x28]
shr ecx, 1
shr ecx, 3
mov dword [ebp - 0x158], edi
mov dword [ebp - 0x154], edi
mov dword [ebp - 0x14c], edi
mov edi, dword [edx + 4]
lea edx, [ecx + 0x1ff]
cmp edx, 0x80
mov dword [ebp - 0x150], 4
ja 0x3001d3f0
movzx ecx, byte [ecx + 0x3004f5b7]
jmp 0x3001d446
cmp edx, 0x800
jb 0x3001d420
cmp edx, 0x2000
jb 0x3001d413
cmp edx, 0x4000
sbb edx, edx
add edx, 0xf
mov dword [ebp - 0x160], edx
jmp 0x3001d44c
cmp edx, 0x1000
sbb ecx, ecx
add ecx, 0xd
jmp 0x3001d446
cmp edx, 0x200
jb 0x3001d43b
cmp edx, 0x400
sbb edx, edx
add edx, 0xb
mov dword [ebp - 0x160], edx
jmp 0x3001d44c
cmp edx, 0x100
sbb ecx, ecx
add ecx, 9
mov dword [ebp - 0x160], ecx
mov edx, dword [ebp + 0x28]
xor ecx, ecx
mov dword [ebp - 0x188], ecx
mov dword [ebp - 0x184], ecx
mov dword [ebp - 0x17c], ecx
mov ecx, dword [ebp + 0x20]
shl ecx, 6
mov dword [ebp - 0x15c], edi
mov edi, dword [edx + 8]
lea edx, [ecx + 0x1ff]
cmp edx, 0x80
mov dword [ebp - 0x180], 4
ja 0x3001d493
movzx ecx, byte [ecx + 0x3004f5b7]
jmp 0x3001d4e3
cmp edx, 0x800
jb 0x3001d4c0
cmp edx, 0x2000
jb 0x3001d4b3
cmp edx, 0x4000
sbb edx, edx
add edx, 0xf
mov dword [ebp - 0x30], edx
jmp 0x3001d4e6
cmp edx, 0x1000
sbb ecx, ecx
add ecx, 0xd
jmp 0x3001d4e3
cmp edx, 0x200
jb 0x3001d4d8
cmp edx, 0x400
sbb edx, edx
add edx, 0xb
mov dword [ebp - 0x30], edx
jmp 0x3001d4e6
cmp edx, 0x100
sbb ecx, ecx
add ecx, 9
mov dword [ebp - 0x30], ecx
mov ecx, dword [ebp + 0x28]
mov dword [ebp - 0x2c], edi
mov edi, dword [ecx + 0xc]
mov ecx, dword [ebp + 0x20]
xor edx, edx
lea ecx, [ecx*8 + 0x1ff]
cmp ecx, 0x80
mov dword [ebp - 0x58], edx
mov dword [ebp - 0x54], edx
mov dword [ebp - 0x50], 8
mov dword [ebp - 0x4c], edx
ja 0x3001d520
mov ecx, dword [ebp + 0x20]
movzx ecx, byte [ecx*8 + 0x3004f5b7]
jmp 0x3001d56a
cmp ecx, 0x800
jb 0x3001d54a
cmp ecx, 0x2000
jb 0x3001d53d
cmp ecx, 0x4000
sbb ecx, ecx
add ecx, 0xf
jmp 0x3001d56a
cmp ecx, 0x1000
sbb ecx, ecx
add ecx, 0xd
jmp 0x3001d56a
cmp ecx, 0x200
jb 0x3001d55f
cmp ecx, 0x400
sbb ecx, ecx
add ecx, 0xb
jmp 0x3001d56a
cmp ecx, 0x100
sbb ecx, ecx
add ecx, 9
cmp eax, 0x80
mov dword [ebp - 0x60], ecx
mov ecx, dword [ebp + 0x28]
mov ecx, dword [ecx + 0x10]
mov dword [ebp - 0x88], edx
mov dword [ebp - 0x84], edx
mov dword [ebp - 0x80], 8
mov dword [ebp - 0x7c], edx
mov dword [ebp - 0x5c], edi
ja 0x3001d59f
mov edi, dword [ebp + 0x20]
movzx edi, byte [edi + 0x3004f5b7]
jmp 0x3001d5e2
cmp eax, 0x800
jb 0x3001d5c5
cmp eax, 0x2000
jb 0x3001d5b9
cmp eax, 0x4000
sbb edi, edi
add edi, 0xf
jmp 0x3001d5e2
cmp eax, 0x1000
sbb edi, edi
add edi, 0xd
jmp 0x3001d5e2
cmp eax, 0x200
jb 0x3001d5d8
cmp eax, 0x400
sbb edi, edi
add edi, 0xb
jmp 0x3001d5e2
cmp eax, 0x100
sbb edi, edi
add edi, 9
cmp eax, 0x80
mov dword [ebp - 0xfc], ecx
mov ecx, dword [ebp + 0x28]
mov ecx, dword [ecx + 0x14]
mov dword [ebp - 0x100], edi
mov dword [ebp - 0x128], edx
mov dword [ebp - 0x124], edx
mov dword [ebp - 0x120], 5
mov dword [ebp - 0x11c], 0x10
ja 0x3001d627
mov edi, dword [ebp + 0x20]
movzx edi, byte [edi + 0x3004f5b7]
jmp 0x3001d66a
cmp eax, 0x800
jb 0x3001d64d
cmp eax, 0x2000
jb 0x3001d641
cmp eax, 0x4000
sbb edi, edi
add edi, 0xf
jmp 0x3001d66a
cmp eax, 0x1000
sbb edi, edi
add edi, 0xd
jmp 0x3001d66a
cmp eax, 0x200
jb 0x3001d660
cmp eax, 0x400
sbb edi, edi
add edi, 0xb
jmp 0x3001d66a
cmp eax, 0x100
sbb edi, edi
add edi, 9
cmp eax, 0x80
mov dword [ebp - 0xcc], ecx
mov ecx, dword [ebp + 0x28]
mov ecx, dword [ecx + 0x18]
mov dword [ebp - 0xd0], edi
mov dword [ebp - 0xf8], edx
mov dword [ebp - 0xf4], edx
mov dword [ebp - 0xf0], 5
mov dword [ebp - 0xec], 0x10
ja 0x3001d6af
mov edi, dword [ebp + 0x20]
movzx edi, byte [edi + 0x3004f5b7]
jmp 0x3001d6f2
cmp eax, 0x800
jb 0x3001d6d5
cmp eax, 0x2000
jb 0x3001d6c9
cmp eax, 0x4000
sbb edi, edi
add edi, 0xf
jmp 0x3001d6f2
cmp eax, 0x1000
sbb edi, edi
add edi, 0xd
jmp 0x3001d6f2
cmp eax, 0x200
jb 0x3001d6e8
cmp eax, 0x400
sbb edi, edi
add edi, 0xb
jmp 0x3001d6f2
cmp eax, 0x100
sbb edi, edi
add edi, 9
cmp eax, 0x80
mov dword [ebp - 0x190], edi
mov edi, dword [ebp + 0x28]
mov dword [ebp - 0x18c], ecx
mov ecx, dword [edi + 0x1c]
mov dword [ebp - 0x1b8], edx
mov dword [ebp - 0x1b4], edx
mov dword [ebp - 0x1b0], 0xb
mov dword [ebp - 0x1ac], edx
ja 0x3001d733
mov eax, dword [ebp + 0x20]
movzx eax, byte [eax + 0x3004f5b7]
jmp 0x3001d776
cmp eax, 0x800
jb 0x3001d759
cmp eax, 0x2000
jb 0x3001d74d
cmp eax, 0x4000
sbb eax, eax
add eax, 0xf
jmp 0x3001d776
cmp eax, 0x1000
sbb eax, eax
add eax, 0xd
jmp 0x3001d776
cmp eax, 0x200
jb 0x3001d76c
cmp eax, 0x400
sbb eax, eax
add eax, 0xb
jmp 0x3001d776
cmp eax, 0x100
sbb eax, eax
add eax, 9
mov dword [ebp - 0x1c0], eax
mov eax, dword [ebp + 0x20]
lea eax, [eax + eax*2]
shl eax, 4
mov dword [ebp - 0x1bc], ecx
lea ecx, [eax + 0x1ff]
cmp ecx, 0x80
mov dword [ebp - 0x1e8], edx
mov dword [ebp - 0x1e4], edx
mov edx, dword [edi + 0x20]
mov dword [ebp - 0x1e0], 0xb
mov dword [ebp - 0x1dc], 0x400
ja 0x3001d7c5
movzx ecx, byte [eax + 0x3004f5b7]
jmp 0x3001d81b
cmp ecx, 0x800
jb 0x3001d7f5
cmp ecx, 0x2000
jb 0x3001d7e8
cmp ecx, 0x4000
sbb eax, eax
add eax, 0xf
mov dword [ebp - 0xa0], eax
jmp 0x3001d821
cmp ecx, 0x1000
sbb ecx, ecx
add ecx, 0xd
jmp 0x3001d81b
cmp ecx, 0x200
jb 0x3001d810
cmp ecx, 0x400
sbb eax, eax
add eax, 0xb
mov dword [ebp - 0xa0], eax
jmp 0x3001d821
cmp ecx, 0x100
sbb ecx, ecx
add ecx, 9
mov dword [ebp - 0xa0], ecx
mov dword [ebp - 0x9c], edx
lea edx, [ebp - 0x148]
push edx
lea eax, [ebp - 0x138]
push eax
lea ecx, [ebp - 0x134]
xor edi, edi
push ecx
lea edx, [ebp - 0x10]
push edx
mov dword [ebp - 0xc8], edi
mov dword [ebp - 0xc4], edi
mov dword [ebp - 0xc0], 4
mov dword [ebp - 0xbc], edi
call fcn.3001bc70
lea eax, [ebp - 0x178]
push eax
lea ecx, [ebp - 0x168]
push ecx
lea edx, [ebp - 0x164]
push edx
lea eax, [ebp - 0x10]
push eax
call fcn.3001bc70
lea ecx, [ebp - 0x42c]
push ecx
lea edx, [ebp - 0x10]
push edx
lea eax, [ebp - 0x58]
push eax
call fcn.3001c030
lea ecx, [ebp - 0x78]
push ecx
lea edx, [ebp - 0x68]
push edx
lea eax, [ebp - 0x64]
push eax
lea ecx, [ebp - 0x10]
push ecx
call fcn.3001bc70
lea edx, [ebp - 0x118]
push edx
lea eax, [ebp - 0x108]
push eax
lea ecx, [ebp - 0x104]
push ecx
lea edx, [ebp - 0x10]
push edx
call fcn.3001bc70
add esp, 0x4c
lea eax, [ebp - 0xe8]
push eax
lea ecx, [ebp - 0xd8]
push ecx
lea edx, [ebp - 0xd4]
push edx
lea eax, [ebp - 0x10]
push eax
call fcn.3001bc70
lea ecx, [ebp - 0xb8]
push ecx
lea edx, [ebp - 0xa8]
push edx
lea eax, [ebp - 0xa4]
push eax
lea ecx, [ebp - 0x10]
push ecx
call fcn.3001bc70
mov eax, dword [ebp + 0x14]
add esp, 0x20
cmp eax, edi
mov dword [ebp - 0x28], edi
jbe 0x3001f205
jmp 0x3001d920
lea edx, [ebp - 0x10]
push edx
lea eax, [ebp - 0x158]
push eax
call fcn.3001c0a0
lea ecx, [ebp - 0x10]
push ecx
lea edx, [ebp - 0x188]
push edx
call fcn.3001c0a0
lea eax, [ebp - 0x42c]
push eax
lea ecx, [ebp - 0x10]
push ecx
lea edx, [ebp - 0x58]
push edx
call dword [ebp - 0x8c]
lea eax, [ebp - 0x10]
push eax
lea edi, [ebp - 0x88]
call fcn.3001ca80
lea ecx, [ebp - 0x10]
push ecx
lea edx, [ebp - 0x128]
push edx
call fcn.3001cc80
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0xf8]
push ecx
call fcn.3001cc80
lea edx, [ebp - 0x10]
push edx
lea eax, [ebp - 0x1b8]
push eax
call fcn.3001cef0
lea ecx, [ebp - 0x10]
push ecx
lea edx, [ebp - 0x1e8]
push edx
call fcn.3001cef0
add esp, 0x40
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0xc8]
push ecx
call fcn.3001c890
mov eax, dword [ebp + 0x10]
add esp, 8
test eax, eax
mov dword [ebp - 0x24], eax
je 0x3001f1aa
mov eax, dword [ebp - 0x58]
mov edi, dword [ebp + 8]
mov ecx, dword [ebp - 0x158]
movzx ecx, byte [ecx]
mov edx, dword [ebp - 4]
mov dword [ebp + 0x28], ecx
inc dword [ebp - 0x158]
mov ecx, dword [ebp + 0x28]
cmp ecx, 9
ja case.default.0x3001d9ef
jmp dword [ecx*4 + 0x3001f210]
mov edx, dword [ebp - 0x20]
mov dword [ebp + 0x28], edx
push esi
push edi
push ebp
push ebx
mov esi, dword [ebp + 0x28]
mov edi, dword [ebp + 8]
mov ebp, dword [ebp + 0x18]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + ebp]
mov edx, dword [esi + ebp + 4]
lea esi, [esi + ebp*2]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + ebp], ecx
mov dword [edi + ebp + 4], edx
lea edi, [edi + ebp*2]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + ebp]
mov edx, dword [esi + ebp + 4]
lea esi, [esi + ebp*2]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + ebp], ecx
mov dword [edi + ebp + 4], edx
lea edi, [edi + ebp*2]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + ebp]
mov edx, dword [esi + ebp + 4]
lea esi, [esi + ebp*2]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + ebp], ecx
mov dword [edi + ebp + 4], edx
lea edi, [edi + ebp*2]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + ebp]
mov edx, dword [esi + ebp + 4]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + ebp], ecx
mov dword [edi + ebp + 4], edx
pop ebx
pop ebp
pop edi
pop esi
mov eax, dword [ebp - 0x58]
mov esi, dword [ebp + 0x18]
mov edi, dword [ebp + 8]
jmp case.default.0x3001d9ef
cmp edx, 4
jb 0x3001daa5
mov ecx, dword [ebp - 8]
mov esi, ecx
shr ecx, 4
and esi, 0xf
mov dword [ebp - 8], ecx
sub edx, 4
jmp 0x3001dace
mov ecx, dword [ebp - 0x10]
mov edi, dword [ecx]
mov ecx, edx
mov esi, edi
shl esi, cl
or esi, dword [ebp - 8]
mov ecx, 4
sub ecx, edx
shr edi, cl
mov ecx, dword [ebp - 0x10]
and esi, 0xf
add edx, 0x1c
add ecx, 4
mov dword [ebp - 8], edi
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x1c]
shl esi, 6
add esi, 0x3004aea8
mov dword [ebp + 0x20], esi
mov esi, dword [ebp - 0x18]
shr ecx, 1
mov dword [ebp - 4], edx
mov byte [ecx + esi], 1
xor edi, edi
jmp 0x3001daf0
test edx, edx
je 0x3001db05
mov esi, dword [ebp - 8]
mov ecx, dword [ebp - 8]
shr esi, 1
and ecx, 1
mov dword [ebp - 8], esi
dec edx
jmp 0x3001db1f
mov edx, dword [ebp - 0x10]
mov ecx, dword [edx]
add edx, 4
mov dword [ebp - 0x10], edx
mov edx, ecx
shr edx, 1
mov dword [ebp - 8], edx
mov edx, 0x1f
and ecx, 1
test ecx, ecx
mov dword [ebp - 4], edx
je 0x3001db6a
mov cl, byte [eax]
inc eax
mov byte [ebp + 0x2b], cl
mov ecx, dword [ebp - 0xc8]
mov dword [ebp - 0x58], eax
movzx esi, byte [ecx]
inc esi
inc ecx
test esi, esi
mov dword [ebp - 0xc8], ecx
je 0x3001dba6
mov cl, byte [ebp + 0x2b]
mov dword [ebp + 0xc], esi
lea ebx, [ebx]
mov esi, dword [ebp + 0x20]
movzx esi, byte [edi + esi]
mov byte [ebp + esi - 0x228], cl
mov esi, dword [ebp + 0xc]
inc edi
dec esi
mov dword [ebp + 0xc], esi
jne 0x3001db50
jmp 0x3001dba6
mov esi, dword [ebp - 0xc8]
movzx ecx, byte [esi]
inc ecx
inc esi
test ecx, ecx
mov dword [ebp - 0xc8], esi
je 0x3001dba6
mov dword [ebp + 0x28], ecx
mov ecx, dword [ebp + 0x20]
movzx ecx, byte [edi + ecx]
mov dword [ebp + 0xc], edx
mov dl, byte [eax]
mov byte [ebp + ecx - 0x228], dl
mov ecx, dword [ebp + 0x28]
mov edx, dword [ebp + 0xc]
inc edi
inc eax
dec ecx
mov dword [ebp - 0x58], eax
mov dword [ebp + 0x28], ecx
jne 0x3001db82
cmp edi, 0x3f
jl 0x3001daf0
jne 0x3001dbc5
mov edx, dword [ebp + 0x20]
movzx ecx, byte [edx + 0x3f]
mov dl, byte [eax]
inc eax
mov byte [ebp + ecx - 0x228], dl
mov dword [ebp - 0x58], eax
push esi
push edi
push ebx
mov edi, dword [ebp + 8]
mov esi, dword [ebp + 0x18]
mov eax, dword [ebp - 0x228]
mov ebx, dword [ebp - 0x224]
mov ecx, dword [ebp - 0x220]
mov edx, dword [ebp - 0x21c]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + esi], ecx
mov dword [edi + esi + 4], edx
lea edi, [edi + esi*2]
mov eax, dword [ebp - 0x218]
mov ebx, dword [ebp - 0x214]
mov ecx, dword [ebp - 0x210]
mov edx, dword [ebp - 0x20c]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + esi], ecx
mov dword [edi + esi + 4], edx
lea edi, [edi + esi*2]
mov eax, dword [ebp - 0x208]
mov ebx, dword [ebp - 0x204]
mov ecx, dword [ebp - 0x200]
mov edx, dword [ebp - 0x1fc]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + esi], ecx
mov dword [edi + esi + 4], edx
lea edi, [edi + esi*2]
mov eax, dword [ebp - 0x1f8]
mov ebx, dword [ebp - 0x1f4]
mov ecx, dword [ebp - 0x1f0]
mov edx, dword [ebp - 0x1ec]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + esi], ecx
mov dword [edi + esi + 4], edx
pop ebx
pop edi
pop esi
mov eax, dword [ebp - 0x58]
mov esi, dword [ebp + 0x18]
mov edi, dword [ebp + 8]
jmp case.default.0x3001d9ef
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
shr eax, 1
mov byte [eax + ecx], 1
mov eax, dword [ebp - 0x1b8]
mov dx, word [eax]
add eax, 2
mov dword [ebp - 0x1b8], eax
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0x2a8]
push ecx
mov word [ebp - 0x2a8], dx
call fcn.30020b80
mov eax, dword [ebp - 4]
cmp eax, 4
jb 0x3001dccb
mov ecx, dword [ebp - 8]
mov edx, ecx
shr ecx, 4
and edx, 0xf
sub eax, 4
mov dword [ebp - 8], ecx
mov dword [ebp - 4], eax
jmp 0x3001dcfe
mov edx, dword [ebp - 0x10]
mov edx, dword [edx]
mov ecx, eax
mov dword [ebp + 0x28], edx
shl edx, cl
or edx, dword [ebp - 8]
mov ecx, 4
sub ecx, eax
mov eax, dword [ebp + 0x28]
shr eax, cl
mov ecx, dword [ebp - 4]
add ecx, 0x1c
and edx, 0xf
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x10]
add eax, 4
mov dword [ebp - 4], ecx
mov dword [ebp - 0x10], eax
mov eax, dword [0x30058460]
shl edx, 8
add edx, 0x3004b2c0
push esi
test eax, eax
push edi
lea eax, [ebp - 0x2a8]
call fcn.3001f3e0
mov eax, dword [ebp - 0x58]
add esp, 8
jmp case.default.0x3001d9ef
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
mov edi, dword [ebp - 0x20]
shr eax, 1
mov byte [eax + ecx], 1
mov ecx, dword [ebp - 0xf8]
movsx edx, byte [ecx]
mov eax, dword [ebp - 0x128]
imul edx, esi
movsx esi, byte [eax]
add edi, edx
add esi, edi
inc eax
inc ecx
mov dword [ebp + 0x28], esi
mov dword [ebp - 0x128], eax
mov dword [ebp - 0xf8], ecx
push esi
push edi
push ebx
mov esi, dword [ebp + 0x28]
mov edi, dword [ebp + 0x18]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + edi]
mov edx, dword [esi + edi + 4]
lea esi, [esi + edi*2]
mov dword [ebp - 0x228], eax
mov dword [ebp - 0x224], ebx
mov dword [ebp - 0x220], ecx
mov dword [ebp - 0x21c], edx
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + edi]
mov edx, dword [esi + edi + 4]
lea esi, [esi + edi*2]
mov dword [ebp - 0x218], eax
mov dword [ebp - 0x214], ebx
mov dword [ebp - 0x210], ecx
mov dword [ebp - 0x20c], edx
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + edi]
mov edx, dword [esi + edi + 4]
lea esi, [esi + edi*2]
mov dword [ebp - 0x208], eax
mov dword [ebp - 0x204], ebx
mov dword [ebp - 0x200], ecx
mov dword [ebp - 0x1fc], edx
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + edi]
mov edx, dword [esi + edi + 4]
mov dword [ebp - 0x1f8], eax
mov dword [ebp - 0x1f4], ebx
mov dword [ebp - 0x1f0], ecx
mov dword [ebp - 0x1ec], edx
pop ebx
pop edi
pop esi
mov esi, dword [ebp - 4]
cmp esi, 7
jb 0x3001de1f
mov ecx, dword [ebp - 8]
mov eax, ecx
shr ecx, 7
and eax, 0x7f
mov dword [ebp - 8], ecx
sub esi, 7
jmp 0x3001de45
mov edi, dword [ebp - 0x10]
mov edx, dword [edi]
mov ecx, esi
mov eax, edx
shl eax, cl
or eax, dword [ebp - 8]
mov ecx, 7
sub ecx, esi
shr edx, cl
and eax, 0x7f
add esi, 0x19
add edi, 4
mov dword [ebp - 8], edx
mov dword [ebp - 0x10], edi
mov edx, dword [ebp + 0x18]
mov edi, dword [ebp + 8]
mov dword [ebp - 4], esi
lea esi, [ebp - 0x228]
lea ecx, [ebp - 0x10]
call fcn.300219a0
mov eax, dword [ebp - 0x58]
mov esi, dword [ebp + 0x18]
jmp case.default.0x3001d9ef
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
mov edi, dword [ebp - 0x20]
shr eax, 1
mov byte [eax + ecx], 1
mov ecx, dword [ebp - 0xf8]
movsx edx, byte [ecx]
mov eax, dword [ebp - 0x128]
imul edx, esi
movsx esi, byte [eax]
add edi, edx
add esi, edi
inc eax
inc ecx
mov dword [ebp + 0x28], esi
mov dword [ebp - 0x128], eax
mov dword [ebp - 0xf8], ecx
push esi
push edi
push ebx
mov esi, dword [ebp + 0x28]
mov edi, dword [ebp + 0x18]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + edi]
mov edx, dword [esi + edi + 4]
lea esi, [esi + edi*2]
mov dword [ebp - 0x228], eax
mov dword [ebp - 0x224], ebx
mov dword [ebp - 0x220], ecx
mov dword [ebp - 0x21c], edx
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + edi]
mov edx, dword [esi + edi + 4]
lea esi, [esi + edi*2]
mov dword [ebp - 0x218], eax
mov dword [ebp - 0x214], ebx
mov dword [ebp - 0x210], ecx
mov dword [ebp - 0x20c], edx
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + edi]
mov edx, dword [esi + edi + 4]
lea esi, [esi + edi*2]
mov dword [ebp - 0x208], eax
mov dword [ebp - 0x204], ebx
mov dword [ebp - 0x200], ecx
mov dword [ebp - 0x1fc], edx
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + edi]
mov edx, dword [esi + edi + 4]
mov dword [ebp - 0x1f8], eax
mov dword [ebp - 0x1f4], ebx
mov dword [ebp - 0x1f0], ecx
mov dword [ebp - 0x1ec], edx
pop ebx
pop edi
pop esi
mov eax, dword [ebp - 0x1e8]
mov cx, word [eax]
add eax, 2
lea edx, [ebp - 0x10]
mov dword [ebp - 0x1e8], eax
push edx
lea eax, [ebp - 0x2a8]
push eax
mov word [ebp - 0x2a8], cx
call fcn.30020b80
mov eax, dword [ebp - 4]
cmp eax, 4
jb 0x3001df89
mov ecx, dword [ebp - 8]
mov edx, ecx
shr ecx, 4
and edx, 0xf
mov dword [ebp - 8], ecx
sub eax, 4
jmp 0x3001dfaf
mov edi, dword [ebp - 0x10]
mov esi, dword [edi]
mov ecx, eax
mov edx, esi
shl edx, cl
or edx, dword [ebp - 8]
mov ecx, 4
sub ecx, eax
shr esi, cl
and edx, 0xf
add eax, 0x1c
add edi, 4
mov dword [ebp - 8], esi
mov dword [ebp - 0x10], edi
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x18]
lea ecx, [ebp - 0x228]
push ecx
mov ecx, dword [ebp + 8]
push eax
push ecx
lea eax, [ebp - 0x2a8]
call fcn.30020410
mov eax, dword [ebp - 0x58]
mov esi, dword [ebp + 0x18]
mov edi, dword [ebp + 8]
jmp case.default.0x3001d9ef
movzx ecx, byte [eax]
mov edx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x18]
shr edx, 1
mov byte [edx + edi], 1
mov edi, dword [ebp + 8]
mov edx, ecx
shl edx, 8
or ecx, edx
mov edx, ecx
shl edx, 0x10
or ecx, edx
mov dword [edi], ecx
mov dword [edi + 4], ecx
mov dword [edi + esi], ecx
mov dword [edi + esi + 4], ecx
lea edx, [edi + esi]
add edx, esi
mov dword [ebp + 0x28], edx
add edx, esi
mov dword [ebp + 8], edx
mov edx, dword [ebp + 0x28]
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov edx, dword [ebp + 8]
add edx, esi
mov dword [ebp + 0x28], edx
mov edx, dword [ebp + 8]
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov edx, dword [ebp + 0x28]
add edx, esi
mov dword [ebp + 8], edx
mov edx, dword [ebp + 0x28]
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov edx, dword [ebp + 8]
inc eax
add edx, esi
mov dword [ebp + 0x28], edx
mov edx, dword [ebp + 8]
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov edx, dword [ebp + 0x28]
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov dword [ebp - 0x58], eax
mov dword [edx + esi], ecx
mov dword [edx + esi + 4], ecx
jmp case.default.0x3001d9ef
movzx ecx, byte [eax]
mov edi, dword [ebp - 0x18]
inc eax
mov dword [ebp - 0x58], eax
movzx edx, byte [eax]
mov dword [ebp + 0x20], edx
mov edx, dword [ebp - 0x1c]
shr edx, 1
mov byte [edx + edi], 1
mov edx, ecx
shl edx, 8
or ecx, edx
mov edx, ecx
shl edx, 0x10
or ecx, edx
mov edx, dword [ebp + 0x20]
mov edi, edx
shl edi, 8
or edx, edi
mov edi, edx
shl edi, 0x10
or edx, edi
mov edi, dword [ebp - 0x88]
mov dword [ebp + 0x20], edx
inc eax
mov dword [ebp - 0x58], eax
movzx edi, byte [edi]
mov dword [ebp + 0x28], edi
inc dword [ebp - 0x88]
mov edi, dword [ebp + 0x28]
and edi, 0xf
shl edi, 2
mov dword [ebp + 0xc], edi
mov edi, dword [edi + 0x3004f850]
and edi, edx
mov edx, dword [ebp + 0xc]
mov edx, dword [edx + 0x3004f890]
and edx, ecx
or edi, edx
mov edx, dword [ebp + 8]
mov dword [edx], edi
mov edx, dword [ebp + 0x28]
shr edx, 4
shl edx, 2
mov edi, dword [edx + 0x3004f850]
mov edx, dword [edx + 0x3004f890]
and edi, dword [ebp + 0x20]
and edx, ecx
or edi, edx
mov edx, edi
mov edi, dword [ebp + 8]
mov dword [edi + 4], edx
mov edx, dword [ebp - 0x88]
movzx edx, byte [edx]
mov dword [ebp + 0x28], edx
inc dword [ebp - 0x88]
mov edx, dword [ebp + 0x28]
and edx, 0xf
shl edx, 2
add edi, esi
add edi, esi
mov dword [ebp + 0xc], edi
mov edi, dword [edx + 0x3004f850]
mov edx, dword [edx + 0x3004f890]
and edi, dword [ebp + 0x20]
and edx, ecx
or edi, edx
mov edx, dword [ebp + 8]
add edx, esi
mov dword [edx], edi
mov edx, dword [ebp + 0x28]
shr edx, 4
shl edx, 2
mov edi, dword [edx + 0x3004f850]
and edi, dword [ebp + 0x20]
mov edx, dword [edx + 0x3004f890]
and edx, ecx
or edi, edx
mov edx, dword [ebp + 8]
mov dword [edx + esi + 4], edi
add edx, esi
mov edi, dword [ebp - 0x88]
movzx edx, byte [edi]
mov dword [ebp + 0x28], edx
and edx, 0xf
inc edi
shl edx, 2
mov dword [ebp - 0x88], edi
mov edi, dword [ebp + 0xc]
add edi, esi
mov dword [ebp + 0x2c], edi
mov edi, dword [edx + 0x3004f850]
mov edx, dword [edx + 0x3004f890]
and edi, dword [ebp + 0x20]
and edx, ecx
or edi, edx
mov edx, dword [ebp + 0xc]
mov dword [edx], edi
mov edx, dword [ebp + 0x28]
shr edx, 4
shl edx, 2
mov edi, dword [edx + 0x3004f850]
mov edx, dword [edx + 0x3004f890]
and edi, dword [ebp + 0x20]
and edx, ecx
or edi, edx
mov edx, dword [ebp + 0xc]
mov dword [edx + 4], edi
mov edi, dword [ebp - 0x88]
movzx edx, byte [edi]
mov dword [ebp + 0x28], edx
inc edi
and edx, 0xf
mov dword [ebp - 0x88], edi
mov edi, dword [ebp + 0x2c]
shl edx, 2
add edi, esi
mov dword [ebp + 0xc], edi
mov edi, dword [edx + 0x3004f850]
mov edx, dword [edx + 0x3004f890]
and edi, dword [ebp + 0x20]
and edx, ecx
or edi, edx
mov edx, dword [ebp + 0x2c]
mov dword [edx], edi
mov edx, dword [ebp + 0x28]
shr edx, 4
shl edx, 2
mov edi, dword [edx + 0x3004f850]
mov edx, dword [edx + 0x3004f890]
and edi, dword [ebp + 0x20]
and edx, ecx
or edi, edx
mov edx, dword [ebp + 0x2c]
mov dword [edx + 4], edi
mov edi, dword [ebp - 0x88]
movzx edx, byte [edi]
inc edi
mov dword [ebp + 0x28], edx
mov dword [ebp - 0x88], edi
mov edi, dword [ebp + 0xc]
and edx, 0xf
shl edx, 2
add edi, esi
mov dword [ebp + 0x2c], edi
mov edi, dword [edx + 0x3004f850]
mov edx, dword [edx + 0x3004f890]
and edi, dword [ebp + 0x20]
and edx, ecx
or edi, edx
mov edx, dword [ebp + 0xc]
mov dword [edx], edi
mov edx, dword [ebp + 0x28]
shr edx, 4
shl edx, 2
mov edi, dword [edx + 0x3004f850]
and edi, dword [ebp + 0x20]
mov edx, dword [edx + 0x3004f890]
and edx, ecx
or edi, edx
mov edx, dword [ebp + 0xc]
mov dword [edx + 4], edi
mov edi, dword [ebp - 0x88]
movzx edx, byte [edi]
mov dword [ebp + 0x28], edx
and edx, 0xf
shl edx, 2
inc edi
mov dword [ebp - 0x88], edi
mov edi, dword [ebp + 0x2c]
add edi, esi
mov dword [ebp + 0xc], edi
mov edi, dword [edx + 0x3004f850]
mov edx, dword [edx + 0x3004f890]
and edi, dword [ebp + 0x20]
and edx, ecx
or edi, edx
mov edx, dword [ebp + 0x2c]
mov dword [edx], edi
mov edx, dword [ebp + 0x28]
shr edx, 4
shl edx, 2
mov edi, dword [edx + 0x3004f850]
mov edx, dword [edx + 0x3004f890]
and edi, dword [ebp + 0x20]
and edx, ecx
or edi, edx
mov edx, dword [ebp + 0x2c]
mov dword [edx + 4], edi
mov edi, dword [ebp - 0x88]
movzx edx, byte [edi]
mov dword [ebp + 0x28], edx
and edx, 0xf
shl edx, 2
inc edi
mov dword [ebp - 0x88], edi
mov edi, dword [edx + 0x3004f850]
mov edx, dword [edx + 0x3004f890]
and edi, dword [ebp + 0x20]
and edx, ecx
or edi, edx
mov edx, dword [ebp + 0xc]
mov dword [edx], edi
mov edx, dword [ebp + 0x28]
shr edx, 4
shl edx, 2
mov edi, dword [edx + 0x3004f850]
mov edx, dword [edx + 0x3004f890]
and edi, dword [ebp + 0x20]
and edx, ecx
or edi, edx
mov edx, dword [ebp + 0xc]
mov dword [edx + 4], edi
mov edi, dword [ebp - 0x88]
movzx edx, byte [edi]
mov dword [ebp + 0x28], edx
and edx, 0xf
shl edx, 2
inc edi
mov dword [ebp - 0x88], edi
mov edi, dword [edx + 0x3004f850]
mov edx, dword [edx + 0x3004f890]
and edi, dword [ebp + 0x20]
and edx, ecx
or edi, edx
mov edx, dword [ebp + 0xc]
mov dword [edx + esi], edi
mov edx, dword [ebp + 0x28]
shr edx, 4
shl edx, 2
mov edi, dword [edx + 0x3004f850]
mov edx, dword [edx + 0x3004f890]
and edi, dword [ebp + 0x20]
and edx, ecx
mov ecx, dword [ebp + 0xc]
or edi, edx
mov dword [ecx + esi + 4], edi
mov edi, dword [ebp + 8]
jmp case.default.0x3001d9ef
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0xf8]
mov edi, dword [ebp - 0x20]
shr edx, 1
mov byte [edx + eax], 1
movsx edx, byte [ecx]
mov eax, dword [ebp - 0x128]
imul edx, esi
movsx esi, byte [eax]
add edi, edx
add esi, edi
inc eax
inc ecx
mov dword [ebp + 0x28], esi
mov dword [ebp - 0x128], eax
mov dword [ebp - 0xf8], ecx
push esi
push edi
push ebp
push ebx
mov esi, dword [ebp + 0x28]
mov edi, dword [ebp + 8]
mov ebp, dword [ebp + 0x18]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + ebp]
mov edx, dword [esi + ebp + 4]
lea esi, [esi + ebp*2]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + ebp], ecx
mov dword [edi + ebp + 4], edx
lea edi, [edi + ebp*2]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + ebp]
mov edx, dword [esi + ebp + 4]
lea esi, [esi + ebp*2]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + ebp], ecx
mov dword [edi + ebp + 4], edx
lea edi, [edi + ebp*2]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + ebp]
mov edx, dword [esi + ebp + 4]
lea esi, [esi + ebp*2]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + ebp], ecx
mov dword [edi + ebp + 4], edx
lea edi, [edi + ebp*2]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + ebp]
mov edx, dword [esi + ebp + 4]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + ebp], ecx
mov dword [edi + ebp + 4], edx
pop ebx
pop ebp
pop edi
pop esi
mov eax, dword [ebp - 0x58]
mov esi, dword [ebp + 0x18]
mov edi, dword [ebp + 8]
jmp case.default.0x3001d9ef
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
shr eax, 1
mov byte [eax + ecx], 1
push esi
push edi
push ebp
push ebx
mov esi, dword [ebp - 0x58]
mov edi, dword [ebp + 8]
mov ebp, dword [ebp + 0x18]
mov eax, dword [esi]
mov ebx, dword [esi + 4]
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0xc]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + ebp], ecx
mov dword [edi + ebp + 4], edx
lea edi, [edi + ebp*2]
mov eax, dword [esi + 0x10]
mov ebx, dword [esi + 0x14]
mov ecx, dword [esi + 0x18]
mov edx, dword [esi + 0x1c]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + ebp], ecx
mov dword [edi + ebp + 4], edx
lea edi, [edi + ebp*2]
mov eax, dword [esi + 0x20]
mov ebx, dword [esi + 0x24]
mov ecx, dword [esi + 0x28]
mov edx, dword [esi + 0x2c]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + ebp], ecx
mov dword [edi + ebp + 4], edx
lea edi, [edi + ebp*2]
mov eax, dword [esi + 0x30]
mov ebx, dword [esi + 0x34]
mov ecx, dword [esi + 0x38]
mov edx, dword [esi + 0x3c]
mov dword [edi], eax
mov dword [edi + 4], ebx
mov dword [edi + ebp], ecx
mov dword [edi + ebp + 4], edx
pop ebx
pop ebp
pop edi
pop esi
mov eax, dword [ebp - 0x58]
mov esi, dword [ebp + 0x18]
mov edi, dword [ebp + 8]
add eax, 0x40
mov dword [ebp - 0x58], eax
jmp case.default.0x3001d9ef
test byte [ebp - 0x28], 8
jne case.0x3001e509.4
mov ecx, dword [ebp - 0x188]
movzx ecx, byte [ecx]
mov dword [ebp + 0x28], ecx
inc dword [ebp - 0x188]
mov ecx, dword [ebp + 0x28]
sub ecx, 3
cmp ecx, 6
ja case.0x3001e509.4
jmp dword [ecx*4 + 0x3001f238]
movzx ecx, byte [eax]
mov edx, ecx
shl edx, 8
or ecx, edx
mov edx, ecx
shl edx, 0x10
or ecx, edx
mov dword [edi], ecx
mov dword [edi + 4], ecx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], ecx
mov dword [edi + esi], ecx
mov dword [edi + esi + 4], ecx
mov dword [edi + esi + 8], ecx
mov dword [edi + esi + 0xc], ecx
lea edx, [edi + esi]
mov dword [edx + esi], ecx
mov dword [edx + esi + 4], ecx
mov dword [edx + esi + 8], ecx
mov dword [edx + esi + 0xc], ecx
lea edi, [edx + esi]
mov dword [edi + esi], ecx
mov dword [edi + esi + 4], ecx
mov dword [edi + esi + 8], ecx
mov dword [edi + esi + 0xc], ecx
lea edx, [edi + esi]
mov dword [edx + esi], ecx
mov dword [edx + esi + 4], ecx
mov dword [edx + esi + 8], ecx
mov dword [edx + esi + 0xc], ecx
lea edi, [edx + esi]
mov dword [edi + esi], ecx
mov dword [edi + esi + 4], ecx
mov dword [edi + esi + 8], ecx
mov dword [edi + esi + 0xc], ecx
lea edx, [edi + esi]
mov dword [edx + esi], ecx
mov dword [edx + esi + 4], ecx
mov dword [edx + esi + 8], ecx
mov dword [edx + esi + 0xc], ecx
lea edi, [edx + esi]
mov dword [edi + esi], ecx
mov dword [edi + esi + 4], ecx
mov dword [edi + esi + 8], ecx
mov dword [edi + esi + 0xc], ecx
lea edx, [edi + esi]
mov dword [edx + esi], ecx
mov dword [edx + esi + 4], ecx
mov dword [edx + esi + 8], ecx
mov dword [edx + esi + 0xc], ecx
lea edi, [edx + esi]
mov dword [edi + esi], ecx
mov dword [edi + esi + 4], ecx
mov dword [edi + esi + 8], ecx
mov dword [edi + esi + 0xc], ecx
lea edx, [edi + esi]
lea edi, [edx + esi]
mov dword [edi], ecx
mov dword [edi + 4], ecx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], ecx
lea edx, [edi + esi]
lea edi, [edx + esi]
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov dword [edx + 8], ecx
mov dword [edx + 0xc], ecx
lea edx, [edi + esi]
mov dword [edi], ecx
mov dword [edi + 4], ecx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], ecx
mov dword [ebp + 0x28], edx
mov edi, dword [ebp + 0x28]
inc eax
mov dword [ebp - 0x58], eax
add edx, esi
mov dword [edi], ecx
mov dword [edi + 4], ecx
mov dword [edi + 8], ecx
mov dword [edi + 0xc], ecx
mov dword [edx], ecx
mov dword [edx + 4], ecx
mov dword [edx + 8], ecx
mov dword [edx + 0xc], ecx
mov dword [edx + esi], ecx
mov dword [edx + esi + 4], ecx
mov dword [edx + esi + 8], ecx
mov dword [edx + esi + 0xc], ecx
jmp 0x3001f151
movzx ecx, byte [eax]
inc eax
mov dword [ebp - 0x58], eax
movzx edx, byte [eax]
mov edi, ecx
shl edi, 8
or ecx, edi
mov edi, edx
shl edi, 8
or edx, edi
mov edi, ecx
shl edi, 0x10
or ecx, edi
mov edi, edx
shl edi, 0x10
or edx, edi
mov dword [ebp + 0xc], edx
mov edx, dword [ebp + 8]
inc eax
mov dword [ebp + 0x28], edx
add edx, esi
mov dword [ebp - 0x58], eax
mov dword [ebp + 0x20], edx
mov dword [ebp - 0x90], 2
mov edi, dword [ebp - 0x88]
movzx edx, byte [edi]
mov dword [ebp + 0x2c], edx
and edx, 3
shl edx, 2
mov dword [ebp - 0x14], edx
mov edx, dword [edx + 0x3004f8d0]
inc edi
mov dword [ebp - 0x88], edi
and edx, dword [ebp + 0xc]
mov edi, dword [ebp - 0x14]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi], edx
mov edi, dword [ebp + 0x20]
mov dword [edi], edx
mov edx, dword [ebp + 0x2c]
mov edi, dword [ebp + 0xc]
shr edx, 2
and edx, 3
shl edx, 2
mov dword [ebp - 0x14], edx
mov edx, dword [edx + 0x3004f8d0]
and edx, edi
mov edi, dword [ebp - 0x14]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi + 4], edx
mov edi, dword [ebp + 0x20]
mov dword [edi + 4], edx
mov edx, dword [ebp + 0x2c]
mov edi, dword [ebp + 0xc]
shr edx, 4
and edx, 3
shl edx, 2
mov dword [ebp - 0x14], edx
mov edx, dword [edx + 0x3004f8d0]
and edx, edi
mov edi, dword [ebp - 0x14]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi + 8], edx
mov edi, dword [ebp + 0x20]
mov dword [edi + 8], edx
mov edx, dword [ebp + 0x2c]
mov edi, dword [ebp + 0xc]
shr edx, 6
shl edx, 2
mov dword [ebp + 0x2c], edx
mov edx, dword [edx + 0x3004f8d0]
and edx, edi
mov edi, dword [ebp + 0x2c]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi + 0xc], edx
mov edi, dword [ebp + 0x20]
mov dword [edi + 0xc], edx
lea edx, [edi + esi]
mov edi, dword [ebp - 0x88]
mov dword [ebp + 0x28], edx
add edx, esi
mov dword [ebp + 0x20], edx
movzx edx, byte [edi]
mov dword [ebp + 0x2c], edx
and edx, 3
inc edi
shl edx, 2
mov dword [ebp - 0x14], edx
mov edx, dword [edx + 0x3004f8d0]
mov dword [ebp - 0x88], edi
and edx, dword [ebp + 0xc]
mov edi, dword [ebp - 0x14]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi], edx
mov edi, dword [ebp + 0x20]
mov dword [edi], edx
mov edx, dword [ebp + 0x2c]
shr edx, 2
and edx, 3
mov edi, dword [ebp + 0xc]
shl edx, 2
mov dword [ebp - 0x14], edx
mov edx, dword [edx + 0x3004f8d0]
and edx, edi
mov edi, dword [ebp - 0x14]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi + 4], edx
mov edi, dword [ebp + 0x20]
mov dword [edi + 4], edx
mov edx, dword [ebp + 0x2c]
mov edi, dword [ebp + 0xc]
shr edx, 4
and edx, 3
shl edx, 2
mov dword [ebp - 0x14], edx
mov edx, dword [edx + 0x3004f8d0]
and edx, edi
mov edi, dword [ebp - 0x14]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi + 8], edx
mov edi, dword [ebp + 0x20]
mov dword [edi + 8], edx
mov edx, dword [ebp + 0x2c]
mov edi, dword [ebp + 0xc]
shr edx, 6
shl edx, 2
mov dword [ebp + 0x2c], edx
mov edx, dword [edx + 0x3004f8d0]
and edx, edi
mov edi, dword [ebp + 0x2c]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi + 0xc], edx
mov edi, dword [ebp + 0x20]
mov dword [edi + 0xc], edx
lea edx, [edi + esi]
mov edi, dword [ebp - 0x88]
mov dword [ebp + 0x28], edx
add edx, esi
mov dword [ebp + 0x20], edx
movzx edx, byte [edi]
mov dword [ebp + 0x2c], edx
and edx, 3
inc edi
shl edx, 2
mov dword [ebp - 0x14], edx
mov edx, dword [edx + 0x3004f8d0]
mov dword [ebp - 0x88], edi
and edx, dword [ebp + 0xc]
mov edi, dword [ebp - 0x14]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi], edx
mov edi, dword [ebp + 0x20]
mov dword [edi], edx
mov edx, dword [ebp + 0x2c]
shr edx, 2
and edx, 3
shl edx, 2
mov dword [ebp - 0x14], edx
mov edx, dword [edx + 0x3004f8d0]
and edx, dword [ebp + 0xc]
mov edi, dword [ebp - 0x14]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi + 4], edx
mov edi, dword [ebp + 0x20]
mov dword [edi + 4], edx
mov edx, dword [ebp + 0x2c]
shr edx, 4
mov edi, dword [ebp + 0xc]
and edx, 3
shl edx, 2
mov dword [ebp - 0x14], edx
mov edx, dword [edx + 0x3004f8d0]
and edx, edi
mov edi, dword [ebp - 0x14]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi + 8], edx
mov edi, dword [ebp + 0x20]
mov dword [edi + 8], edx
mov edx, dword [ebp + 0x2c]
mov edi, dword [ebp + 0xc]
shr edx, 6
shl edx, 2
mov dword [ebp + 0x2c], edx
mov edx, dword [edx + 0x3004f8d0]
and edx, edi
mov edi, dword [ebp + 0x2c]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi + 0xc], edx
mov edi, dword [ebp + 0x20]
mov dword [edi + 0xc], edx
lea edx, [edi + esi]
mov edi, dword [ebp - 0x88]
mov dword [ebp + 0x28], edx
add edx, esi
mov dword [ebp + 0x20], edx
movzx edx, byte [edi]
mov dword [ebp + 0x2c], edx
inc edi
and edx, 3
shl edx, 2
mov dword [ebp - 0x14], edx
mov edx, dword [edx + 0x3004f8d0]
mov dword [ebp - 0x88], edi
and edx, dword [ebp + 0xc]
mov edi, dword [ebp - 0x14]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi], edx
mov edi, dword [ebp + 0x20]
mov dword [edi], edx
mov edx, dword [ebp + 0x2c]
mov edi, dword [ebp + 0xc]
shr edx, 2
and edx, 3
shl edx, 2
mov dword [ebp - 0x14], edx
mov edx, dword [edx + 0x3004f8d0]
and edx, edi
mov edi, dword [ebp - 0x14]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi + 4], edx
mov edi, dword [ebp + 0x20]
mov dword [edi + 4], edx
mov edx, dword [ebp + 0x2c]
mov edi, dword [ebp + 0xc]
shr edx, 4
and edx, 3
shl edx, 2
mov dword [ebp - 0x14], edx
mov edx, dword [edx + 0x3004f8d0]
and edx, edi
mov edi, dword [ebp - 0x14]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi + 8], edx
mov edi, dword [ebp + 0x20]
mov dword [edi + 8], edx
mov edx, dword [ebp + 0x2c]
mov edi, dword [ebp + 0xc]
shr edx, 6
shl edx, 2
mov dword [ebp + 0x2c], edx
mov edx, dword [edx + 0x3004f8d0]
and edx, edi
mov edi, dword [ebp + 0x2c]
mov edi, dword [edi + 0x3004f8e0]
and edi, ecx
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [edi + 0xc], edx
mov edi, dword [ebp + 0x20]
mov dword [edi + 0xc], edx
lea edx, [edi + esi]
mov dword [ebp + 0x28], edx
add edx, esi
mov dword [ebp + 0x20], edx
dec dword [ebp - 0x90]
jne 0x3001e673
jmp 0x3001f151
cmp edx, 4
jb 0x3001ea0d
mov ecx, dword [ebp - 8]
and ecx, 0xf
mov dword [ebp + 0x28], ecx
shr dword [ebp - 8], 4
sub edx, 4
jmp 0x3001ea49
mov ecx, dword [ebp - 0x10]
mov ecx, dword [ecx]
mov dword [ebp + 0x28], ecx
mov dword [ebp + 0x20], ecx
mov ecx, edx
mov edx, dword [ebp + 0x28]
shl edx, cl
or edx, dword [ebp - 8]
and edx, 0xf
mov dword [ebp + 0x28], edx
mov edx, dword [ebp - 4]
mov ecx, 4
sub ecx, edx
mov edx, dword [ebp + 0x20]
shr edx, cl
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 8], edx
mov edx, dword [ebp - 4]
add edx, 0x1c
add ecx, 4
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp + 0x28]
shl ecx, 6
add ecx, 0x3004aea8
mov dword [ebp - 4], edx
mov dword [ebp + 0x20], ecx
mov dword [ebp + 0xc], 0
test edx, edx
je 0x3001ea78
mov ecx, dword [ebp - 8]
and ecx, 1
mov dword [ebp + 0x28], ecx
shr dword [ebp - 8], 1
mov ecx, dword [ebp + 0x28]
dec edx
jmp 0x3001ea92
mov edx, dword [ebp - 0x10]
mov ecx, dword [edx]
add edx, 4
mov dword [ebp - 0x10], edx
mov edx, ecx
shr edx, 1
mov dword [ebp - 8], edx
mov edx, 0x1f
and ecx, 1
test ecx, ecx
mov dword [ebp - 4], edx
je 0x3001eae6
mov cl, byte [eax]
mov byte [ebp + 0x2b], cl
mov ecx, dword [ebp - 0xc8]
inc eax
mov dword [ebp - 0x58], eax
movzx ecx, byte [ecx]
inc ecx
mov dword [ebp + 0x2c], ecx
inc dword [ebp - 0xc8]
mov ecx, dword [ebp + 0x2c]
test ecx, ecx
je 0x3001eb29
mov dword [ebp + 0x2c], ecx
nop
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x20]
movzx edx, byte [ecx + edx]
mov cl, byte [ebp + 0x2b]
mov byte [ebp + edx - 0x228], cl
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x2c]
inc edx
dec ecx
mov dword [ebp + 0xc], edx
mov dword [ebp + 0x2c], ecx
jne 0x3001eac0
jmp 0x3001eb26
mov ecx, dword [ebp - 0xc8]
movzx ecx, byte [ecx]
inc ecx
mov dword [ebp + 0x2c], ecx
inc dword [ebp - 0xc8]
mov ecx, dword [ebp + 0x2c]
test ecx, ecx
je 0x3001eb29
mov dword [ebp + 0x28], ecx
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 0x20]
movzx edx, byte [ecx + edx]
mov cl, byte [eax]
mov byte [ebp + edx - 0x228], cl
inc dword [ebp + 0xc]
mov ecx, dword [ebp + 0x28]
inc eax
dec ecx
mov dword [ebp - 0x58], eax
mov dword [ebp + 0x28], ecx
jne 0x3001eb03
mov edx, dword [ebp - 4]
mov ecx, dword [ebp + 0xc]
cmp ecx, 0x3f
jl 0x3001ea62
jne 0x3001eb4b
mov edx, dword [ebp + 0x20]
movzx ecx, byte [edx + 0x3f]
mov dl, byte [eax]
inc eax
mov byte [ebp + ecx - 0x228], dl
mov dword [ebp - 0x58], eax
mov dword [ebp + 0x20], edi
add edi, esi
mov dword [ebp + 0x28], edi
lea ecx, [ebp - 0x224]
mov dword [ebp + 0xc], 2
movzx edi, word [ecx - 4]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi], edx
mov edi, dword [ebp + 0x28]
mov dword [edi], edx
movzx edi, word [ecx - 2]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi + 4], edx
mov edi, dword [ebp + 0x28]
mov dword [edi + 4], edx
movzx edi, word [ecx]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi + 8], edx
mov edi, dword [ebp + 0x28]
mov dword [edi + 8], edx
movzx edi, word [ecx + 2]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi + 0xc], edx
mov edi, dword [ebp + 0x28]
mov dword [edi + 0xc], edx
lea edx, [edi + esi]
movzx edi, word [ecx + 4]
mov dword [ebp + 0x20], edx
add edx, esi
mov dword [ebp + 0x28], edx
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi], edx
mov edi, dword [ebp + 0x28]
mov dword [edi], edx
movzx edi, word [ecx + 6]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi + 4], edx
mov edi, dword [ebp + 0x28]
mov dword [edi + 4], edx
movzx edi, word [ecx + 8]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi + 8], edx
mov edi, dword [ebp + 0x28]
mov dword [edi + 8], edx
movzx edi, word [ecx + 0xa]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi + 0xc], edx
mov edi, dword [ebp + 0x28]
mov dword [edi + 0xc], edx
lea edx, [edi + esi]
mov dword [ebp + 0x20], edx
movzx edi, word [ecx + 0xc]
add edx, esi
mov dword [ebp + 0x28], edx
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi], edx
mov edi, dword [ebp + 0x28]
mov dword [edi], edx
movzx edi, word [ecx + 0xe]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi + 4], edx
mov edi, dword [ebp + 0x28]
mov dword [edi + 4], edx
movzx edi, word [ecx + 0x10]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi + 8], edx
mov edi, dword [ebp + 0x28]
mov dword [edi + 8], edx
movzx edi, word [ecx + 0x12]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi + 0xc], edx
mov edi, dword [ebp + 0x28]
mov dword [edi + 0xc], edx
lea edx, [edi + esi]
movzx edi, word [ecx + 0x14]
mov dword [ebp + 0x20], edx
add edx, esi
mov dword [ebp + 0x28], edx
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi], edx
mov edi, dword [ebp + 0x28]
mov dword [edi], edx
movzx edi, word [ecx + 0x16]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi + 4], edx
mov edi, dword [ebp + 0x28]
mov dword [edi + 4], edx
movzx edi, word [ecx + 0x18]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi + 8], edx
mov edi, dword [ebp + 0x28]
mov dword [edi + 8], edx
movzx edi, word [ecx + 0x1a]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x20]
mov dword [edi + 0xc], edx
mov edi, dword [ebp + 0x28]
mov dword [edi + 0xc], edx
lea edx, [edi + esi]
mov dword [ebp + 0x20], edx
add edx, esi
mov dword [ebp + 0x28], edx
mov edx, dword [ebp + 0xc]
add ecx, 0x20
dec edx
mov dword [ebp + 0xc], edx
jne 0x3001eb60
jmp 0x3001f151
mov eax, dword [ebp - 0x1b8]
mov cx, word [eax]
add eax, 2
lea edx, [ebp - 0x10]
mov dword [ebp - 0x1b8], eax
push edx
lea eax, [ebp - 0x2a8]
push eax
mov word [ebp - 0x2a8], cx
call fcn.30020b80
mov eax, dword [ebp - 4]
cmp eax, 4
jb 0x3001ee5f
mov ecx, dword [ebp - 8]
mov edx, ecx
shr ecx, 4
and edx, 0xf
sub eax, 4
mov dword [ebp - 8], ecx
mov dword [ebp - 4], eax
jmp 0x3001ee92
mov ecx, dword [ebp - 0x10]
mov edx, dword [ecx]
mov ecx, eax
mov dword [ebp + 0x28], edx
shl edx, cl
or edx, dword [ebp - 8]
mov ecx, 4
sub ecx, eax
mov eax, dword [ebp + 0x28]
shr eax, cl
mov ecx, dword [ebp - 4]
add ecx, 0x1c
and edx, 0xf
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x10]
add eax, 4
mov dword [ebp - 4], ecx
mov dword [ebp - 0x10], eax
mov ecx, esi
lea eax, [ebp - 0x2a8]
mov esi, edi
call fcn.300203e0
mov eax, dword [ebp - 0x58]
mov esi, dword [ebp + 0x18]
jmp 0x3001f151
mov ecx, edi
add edi, esi
mov dword [ebp + 0x28], edi
mov dword [ebp + 0x20], 2
lea ebx, [ebx]
movzx edi, word [eax]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov dword [ecx], edx
mov edi, dword [ebp + 0x28]
mov dword [edi], edx
movzx edi, word [eax + 2]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov dword [ecx + 4], edx
mov edi, dword [ebp + 0x28]
mov dword [edi + 4], edx
movzx edi, word [eax + 4]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [ecx + 8], edx
mov dword [edi + 8], edx
movzx edi, word [eax + 6]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [ecx + 0xc], edx
mov dword [edi + 0xc], edx
add eax, 8
lea edx, [esi + esi]
add edi, edx
add ecx, edx
mov dword [ebp + 0x28], edi
mov dword [ebp - 0x58], eax
movzx edi, word [eax]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [ecx], edx
mov dword [edi], edx
movzx edi, word [eax + 2]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [ecx + 4], edx
mov dword [edi + 4], edx
movzx edi, word [eax + 4]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov dword [ecx + 8], edx
mov edi, dword [ebp + 0x28]
mov dword [edi + 8], edx
movzx edi, word [eax + 6]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov dword [ecx + 0xc], edx
mov edi, dword [ebp + 0x28]
mov dword [edi + 0xc], edx
add eax, 8
mov dword [ebp - 0x58], eax
lea edx, [esi + esi]
add edi, edx
add ecx, edx
mov dword [ebp + 0x28], edi
movzx edi, word [eax]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov dword [ecx], edx
mov edi, dword [ebp + 0x28]
mov dword [edi], edx
movzx edi, word [eax + 2]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [ecx + 4], edx
mov dword [edi + 4], edx
movzx edi, word [eax + 4]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [ecx + 8], edx
mov dword [edi + 8], edx
movzx edi, word [eax + 6]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [ecx + 0xc], edx
mov dword [edi + 0xc], edx
lea edx, [esi + esi]
add edi, edx
add eax, 8
mov dword [ebp + 0x28], edi
add ecx, edx
mov dword [ebp - 0x58], eax
movzx edi, word [eax]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
and edi, 0xff
shl edx, 8
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [ecx], edx
mov dword [edi], edx
movzx edi, word [eax + 2]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [ecx + 4], edx
mov dword [edi + 4], edx
movzx edi, word [eax + 4]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [ecx + 8], edx
mov dword [edi + 8], edx
movzx edi, word [eax + 6]
mov edx, edi
and edx, 0xffffff00
shl edx, 8
or edx, edi
shl edx, 8
and edi, 0xff
or edx, edi
mov edi, dword [ebp + 0x28]
mov dword [ecx + 0xc], edx
mov dword [edi + 0xc], edx
lea edx, [esi + esi]
add edi, edx
add ecx, edx
mov edx, dword [ebp + 0x20]
add eax, 8
dec edx
mov dword [ebp - 0x58], eax
mov dword [ebp + 0x28], edi
mov dword [ebp + 0x20], edx
jne 0x3001eec0
mov edi, dword [ebp + 8]
mov edx, dword [ebp - 0x20]
mov ecx, 8
add edx, ecx
mov dword [ebp - 0x20], edx
sub dword [ebp - 0x24], ecx
mov edx, dword [ebp - 0x1c]
add edi, ecx
mov ecx, dword [ebp - 0x18]
shr edx, 1
mov byte [edx + ecx], 1
mov ecx, dword [ebp - 0x1c]
add ecx, dword [ebp + 0x24]
mov edx, dword [ebp - 0x18]
mov dword [ebp - 0x1c], ecx
shr ecx, 1
mov byte [ecx + edx], 1
mov ecx, dword [ebp + 0x24]
add dword [ebp - 0x1c], ecx
mov edx, dword [ebp - 0x20]
mov ecx, 8
add edx, ecx
mov dword [ebp - 0x20], edx
mov edx, dword [ebp - 0x24]
add edi, ecx
sub edx, ecx
mov dword [ebp + 8], edi
mov dword [ebp - 0x24], edx
jne 0x3001d9ce
cmp dword [ebp + 0x24], 1
jne 0x3001f1c6
test byte [ebp - 0x28], 8
je 0x3001f1d4
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x94]
add eax, edx
mov dword [ebp - 0x18], eax
jmp 0x3001f1d4
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x94]
add ecx, eax
mov dword [ebp - 0x18], ecx
mov eax, dword [ebp - 0x98]
mov ecx, dword [ebp + 8]
mov edi, dword [ebp - 0x20]
add ecx, eax
add edi, eax
mov eax, dword [ebp - 0x28]
mov dword [ebp + 8], ecx
mov ecx, dword [ebp + 0x14]
add eax, 8
cmp eax, ecx
mov dword [ebp - 0x1c], 0
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x28], eax
jb 0x3001d920
mov eax, dword [ebp - 0x10]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret