Function at 0x410480
Capabilities:
Encode data using xor
Encrypt data using speck

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x3c8
mov edx, dword [ebp + 8]
mov dword [ebp - 0x1b0], edi
mov dword [ebp - 0x204], edx
mov edi, dword [edx + 4]
xor edx, edx
mov dword [ebp - 0x1b8], ecx
mov dword [ebp - 0x1ac], ebx
push 1
pop ebx
mov dword [ebp - 0x1fc], 0
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x1cc], ecx
mov dword [ebp - 4], edx
mov dword [ebp - 8], edx
mov dword [ebp - 0x1a4], esi
movzx esi, byte [edi + 0x16d]
lea eax, [ebp - 0x394]
push eax
and esi, 0x10
lea edx, [ebp - 0x1dc]
push edx
shr esi, 4
lea ecx, [ebp + 0x10]
push ecx
lea eax, [ebp + 0xc]
push eax
call fcn.0042e810
mov dword [ebp - 0x10], eax
add esp, 0x10
cmp dword [ebp - 0x10], 0
jne 0x411bd1
mov ecx, dword [ebp - 0x1d4]
cmp ecx, 2
je 0x411c51
cmp ecx, 1
je 0x411bc5
movzx eax, byte [edi + 0x16d]
test al, 0x20
mov dword [ebp - 0x1b4], eax
je 0x41057a
movsx eax, byte [edi + 0x158]
test eax, eax
jne 0x41057a
cmp dword [ebp - 0x1d0], 1
jle 0x41057a
cmp ecx, 5
jl 0x41057a
cmp ecx, 0x11
jle 0x41056d
cmp ecx, 0x19
jl 0x41057a
cmp ecx, 0x1f
jle 0x41056d
cmp ecx, 0x32
jl 0x410563
cmp ecx, 0x34
jle 0x41056d
jmp 0x41057a
cmp ecx, 0x28
jl 0x41057a
cmp ecx, 0x30
jg 0x41057a
mov eax, 1
mov dword [ebp - 0x1cc], eax
jmp 0x410582
xor eax, eax
mov dword [ebp - 0x1cc], eax
mov eax, dword [ebp - 0x394]
cmp eax, 7
jl 0x4106c0
cmp eax, 8
jg 0x4106c0
mov eax, dword [ebp - 0x1d0]
test eax, eax
mov dword [ebp - 0x1b8], eax
je 0x4105bd
mov eax, dword [ebp - 0x1d8]
cdq
mov ebx, dword [ebp - 0x1b8]
idiv ebx
mov ebx, eax
jmp 0x4105bf
xor ebx, ebx
test ebx, ebx
je 0x4106b3
cmp ecx, 0x34
je 0x4105d6
cmp ecx, 0x1c
jl 0x4105e3
cmp ecx, 0x2c
jg 0x4105e3
mov eax, 1
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0xc], eax
jmp 0x4105ea
mov dword [ebp - 0x2c], 0
mov eax, dword [ebp - 0x390]
test eax, eax
jle 0x410659
mov edx, dword [ebp - 0x1b8]
cmp edx, dword [ebp - 0x380]
jne 0x410619
mov edx, dword [ebp - 0x384]
cmp edx, dword [ebp - 0x388]
jg 0x410619
cmp edx, 1
je 0x4108e5
mov dword [ebp - 0x214], edi
xor ecx, ecx
lea edi, [ecx*8]
lea edi, [edi + ecx*4]
mov edx, dword [ebp + edi - 0x384]
mov edi, dword [ebp + edi - 0x380]
mov dword [ebp + ecx*4 - 0xa8], edx
mov dword [ebp + ecx*4 - 0x124], edi
mov dword [ebp + ecx*4 - 0x1a0], edx
inc ecx
cmp ecx, eax
jl 0x410621
mov edi, dword [ebp - 0x214]
xor edx, edx
test eax, eax
jle 0x41068a
mov dword [ebp - 0x214], edi
xor ecx, ecx
mov edi, dword [ebp + ecx*4 - 0x1a0]
sub edi, dword [ebp + ecx*4 - 0xa8]
imul edi, dword [ebp + ecx*4 - 0x124]
inc ecx
add edx, edi
cmp ecx, eax
jl 0x410667
mov edi, dword [ebp - 0x214]
add edx, dword [ebp - 0x38c]
lea eax, [ebp - 0x394]
mov dword [ebp - 0x1dc], edx
lea edx, [ebp - 0x1a0]
push eax
push edx
push 0
call fcn.0042f7c0
add esp, 0xc
jmp 0x41079f
mov eax, 1
mov dword [ebp - 8], eax
jmp 0x41079f
cmp eax, 6
je 0x4106ce
cmp eax, 5
jne 0x410756
cmp dword [ebp - 0x1d0], 0
je 0x410744
mov eax, dword [ebp - 0x1d8]
test eax, eax
mov dword [ebp - 0x1b8], eax
je 0x41074c
test byte [ebp - 0x1b4], 0x10
je 0x410734
push edi
lea eax, [ebp - 0x1dc]
push eax
call fcn.0042fe70
add esp, 8
test eax, eax
je 0x41073b
cmp dword [ebp - 0x1cc], 0
jne 0x410734
mov eax, dword [ebp - 0x1d0]
test eax, eax
mov dword [ebp - 0x1b8], eax
je 0x410730
mov eax, dword [ebp - 0x1d8]
cdq
mov ecx, dword [ebp - 0x1b8]
idiv ecx
mov ebx, eax
jmp 0x41079f
xor ebx, ebx
jmp 0x41079f
mov ebx, 1
jmp 0x41079f
mov ebx, 1
xor esi, esi
jmp 0x41079f
xor eax, eax
mov dword [ebp - 0x1b8], eax
mov ebx, 1
mov dword [ebp - 8], ebx
jmp 0x41079f
cmp ecx, 0x34
je 0x410787
cmp ecx, 0x1c
jl 0x410765
cmp ecx, 0x2c
jle 0x410787
mov eax, dword [ebp - 0x1d8]
test eax, eax
mov edx, dword [ebp - 8]
jne 0x410777
mov edx, 1
mov ebx, 1
mov dword [ebp - 0x1b8], eax
mov dword [ebp - 8], edx
jmp 0x41079f
mov eax, dword [ebp - 0x1d0]
mov ebx, 2
mov dword [ebp - 0x1b8], eax
mov dword [ebp - 0xc], 1
mov dword [ebp - 0x1e8], esi
movzx edx, byte [edi + 0x16f]
test dl, 0x20
je 0x410818
and edx, 0xffffffdf
mov byte [edi + 0x16f], dl
cmp ebx, 1
je 0x410b09
xor eax, eax
push eax
push eax
push edi
call fcn.00437e30
mov dword [ebp - 0x10], eax
add esp, 0xc
cmp dword [ebp - 0x10], 0
jne 0x410a89
add dword [edi + 0x98], 1
mov eax, dword [edi + 0x3c]
movzx edx, byte [edi + 0x16f]
adc dword [edi + 0x9c], 0
and edx, 0xfffffffb
mov dword [edi + 0x48], eax
mov byte [edi + 0x16f], dl
cmp byte [edi + 0x154], 3
je 0x4109d1
mov dword [edi + 0x80], 0
cmp dword [ebp - 4], 0
jne 0x4118c5
cmp dword [ebp - 8], 0
je 0x410b32
cmp ebx, 1
jle 0x4104ce
mov eax, dword [ebp - 0x394]
cmp eax, 7
je 0x410845
cmp eax, 8
jne 0x4108c4
cmp dword [ebp - 0xc], 0
je 0x410862
mov eax, dword [ebp - 0x1d0]
xor edx, edx
add dword [ebp - 0x1dc], eax
dec ebx
mov dword [ebp - 0xc], edx
jmp 0x4107a5
cmp dword [ebp - 0x2c], 0
mov edx, dword [ebp - 0xc]
je 0x410870
mov edx, 1
xor eax, eax
mov dword [ebp - 0xc], edx
mov edx, dword [ebp - 0x390]
test edx, edx
jle 0x41089e
xor ecx, ecx
mov esi, dword [ebp + ecx*4 - 0x1a0]
sub esi, dword [ebp + ecx*4 - 0xa8]
imul esi, dword [ebp + ecx*4 - 0x124]
inc ecx
add eax, esi
cmp ecx, edx
jl 0x410881
add eax, dword [ebp - 0x38c]
lea edx, [ebp - 0x1a0]
mov dword [ebp - 0x1dc], eax
lea eax, [ebp - 0x394]
push eax
push edx
push 0
call fcn.0042f7c0
add esp, 0xc
jmp 0x4108df
mov edx, dword [ebp - 0xc]
test edx, edx
mov eax, dword [ebp - 0x1d0]
je 0x4108d6
mov edx, 0
add dword [ebp - 0x1dc], eax
mov dword [ebp - 0xc], edx
dec ebx
jmp 0x4107a5
cmp eax, 1
jg 0x410969
test byte [ebp - 0x1b4], 0x10
je 0x410923
push edi
lea eax, [ebp - 0x1dc]
push eax
call fcn.0042fe70
add esp, 8
test eax, eax
je 0x410945
cmp dword [ebp - 0x1cc], 0
jne 0x410923
mov eax, dword [ebp - 0x390]
test eax, eax
jg 0x410619
jmp 0x410659
mov eax, dword [ebp - 0x1d8]
mov ebx, 1
mov edx, dword [ebp - 0x38c]
mov dword [ebp - 0x1b8], eax
mov dword [ebp - 0x1dc], edx
jmp 0x41079f
mov esi, dword [ebp - 0x1d8]
mov ebx, 1
mov eax, dword [ebp - 0x38c]
mov dword [ebp - 0x1b8], esi
xor esi, esi
mov dword [ebp - 0x1dc], eax
jmp 0x41079f
mov dword [ebp - 0x214], edi
mov ecx, 1
lea edx, [ecx*8]
lea edx, [edx + ecx*4]
mov edi, dword [ebp + edx - 0x384]
cmp edi, 1
je 0x410995
mov edi, dword [ebp - 0x214]
jmp 0x410619
cmp edi, dword [ebp + edx - 0x388]
jg 0x41098a
mov edi, dword [ebp + edx - 0x394]
imul edi, dword [ebp + edx - 0x38c]
cmp edi, dword [ebp + edx - 0x380]
je 0x4109c1
mov edi, dword [ebp - 0x214]
jmp 0x410619
inc ecx
cmp ecx, eax
jl 0x410974
mov edi, dword [ebp - 0x214]
jmp 0x4108ea
movzx ecx, byte [eax + 1]
shl ecx, 8
movzx esi, byte [eax]
or esi, ecx
movsx ecx, si
cmp ecx, 3
je 0x4109ea
cmp ecx, 1
jne 0x4109f5
add eax, 2
mov dword [edi + 0x3c], eax
jmp 0x41080e
mov eax, dword [edi + 0x18]
test eax, eax
mov esi, dword [ebp - 0x1a4]
je 0x410a67
test byte [eax + 0x44], 2
je 0x410a3a
mov edx, 0x23
mov dword [eax + 0x38], edx
mov eax, dword [edi + 0x18]
mov dword [eax + 0x3c], edx
mov eax, dword [edi + 0x64]
test eax, eax
je 0x410a25
xor edx, edx
mov dword [eax + 4], edx
mov dword [edi + 0x64], edx
mov eax, 0x23
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
mov eax, 0x23
push eax
movzx edx, byte [edi + 0x16c]
push eax
and edx, 7
push edx
push 0xffffffffffffffff
push edi
call fcn.004299d0
add esp, 0x14
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push edi
mov eax, 0x23
push eax
push eax
push 1
call fcn.00415e60
add esp, 0x10
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
mov edx, dword [edi + 0x18]
test edx, edx
mov esi, dword [ebp - 0x1a4]
je 0x410aec
test byte [edx + 0x44], 2
je 0x410ac4
mov dword [edx + 0x38], eax
mov edx, dword [edi + 0x18]
mov dword [edx + 0x3c], eax
mov edx, dword [edi + 0x64]
test edx, edx
je 0x410ab4
xor ecx, ecx
mov dword [edx + 4], ecx
mov dword [edi + 0x64], ecx
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push eax
movzx edx, byte [edi + 0x16c]
push eax
and edx, 7
push edx
push 0xffffffffffffffff
push edi
call fcn.004299d0
add esp, 0x14
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push edi
push eax
push eax
push 1
call fcn.00415e60
add esp, 0x10
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0xc]
cmp byte [eax], 1
jne 0x4107c3
mov eax, dword [ebp - 0x1dc]
mov edx, dword [ebp - 0x1b8]
mov dword [edi + 0x80], eax
mov dword [edi + 0x134], edx
jmp 0x4107c3
mov esi, dword [ebp - 0x1d0]
mov ecx, dword [ebp - 0x1b8]
mov dword [ebp - 0x1c4], ecx
mov dword [ebp - 0x1a8], ecx
lea ecx, [esi - 1]
mov eax, dword [ebp - 0x1dc]
cmp ecx, 0x20
mov dword [ebp - 0x1c0], eax
mov dword [ebp - 0x1c8], eax
mov dword [ebp - 0x1bc], esi
jae 0x410b92
mov eax, 1
shl eax, cl
test eax, 0x808a
je 0x410b92
mov esi, dword [ebp - 0x1c0]
mov eax, 1
and esi, ecx
mov dword [ebp - 0x1e4], esi
mov esi, dword [edi + 0x3c]
and ecx, esi
jmp 0x410ba5
mov ecx, dword [ebp - 0x1c0]
xor eax, eax
mov esi, dword [edi + 0x3c]
mov dword [ebp - 0x1e4], ecx
mov ecx, esi
test dl, 0x40
jne 0x410caf
cmp dword [edi + 0x138], 7
je 0x4114a1
xor edx, edx
mov dword [ebp - 0x1f4], eax
mov dword [ebp - 0x1f0], ecx
mov ecx, edx
mov dword [ebp - 0x1f8], ebx
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x1c4]
mov ebx, dword [edi + 0x44]
sub ebx, esi
cmp edx, ebx
jle 0x410eda
test ebx, ebx
jle 0x410c12
push ebx
push esi
push dword [ebp - 0x1c8]
call fcn.004aacb0
add esp, 0xc
mov edx, dword [ebp - 0x1a8]
sub edx, ebx
add dword [ebp - 0x1c8], ebx
add dword [edi + 0x3c], ebx
mov dword [ebp - 0x1a8], edx
movsx eax, byte [edi + 0x154]
cmp eax, 3
je 0x410e19
cmp dword [edi + 0x138], 0xb
jne 0x410c34
test byte [edi + 0x172], 0x20
jne 0x410c57
cmp eax, 5
jne 0x410d85
cmp edx, dword [edi + 0xec]
jb 0x410c57
mov eax, dword [ebp - 0x1c8]
mov dword [edi + 0x80], eax
mov dword [edi + 0x134], edx
xor eax, eax
push eax
push eax
push edi
call fcn.00437e30
add esp, 0xc
test eax, eax
jne 0x411845
mov edx, dword [ebp - 0x1a8]
mov esi, dword [edi + 0x3c]
mov dword [edi + 0x48], esi
cmp edx, dword [edi + 0xec]
jb 0x410c8c
sub edx, dword [edi + 0xf0]
mov dword [ebp - 0x1a8], edx
cmp byte [edi + 0x154], 3
jne 0x410ca5
add esi, 2
mov ecx, 1
mov dword [edi + 0x3c], esi
jmp 0x410bda
mov ecx, 1
jmp 0x410bda
cmp dword [ebp - 0x1cc], 0
je 0x410d44
mov eax, dword [ebp - 0x1b8]
mov edx, dword [ebp - 0x1c0]
test byte [ebp - 0x1e4], 3
lea eax, [eax + edx]
jne 0x410d33
cmp dword [ebp - 0x1bc], 4
je 0x410d22
cmp dword [ebp - 0x1bc], 8
jne 0x410cf7
cmp eax, dword [ebp - 0x1c0]
ja 0x4115ce
jmp 0x41082c
cmp dword [ebp - 0x1bc], 0x10
jne 0x410d11
cmp eax, dword [ebp - 0x1c0]
ja 0x41165d
jmp 0x41082c
cmp eax, dword [ebp - 0x1c0]
ja 0x411745
jmp 0x41082c
cmp eax, dword [ebp - 0x1c0]
ja 0x411760
jmp 0x41082c
cmp eax, dword [ebp - 0x1c0]
ja 0x4117b7
jmp 0x41082c
cmp dword [ebp - 0x1e8], 0
je 0x41082c
push dword [ebp - 0x1b8]
push edi
lea eax, [ebp - 0x1dc]
push eax
call fcn.0042f820
mov dword [ebp - 0x10], eax
add esp, 0xc
cmp dword [ebp - 0x10], 0
je 0x41082c
push 0
push 0x5f
call fcn.00417f60
add esp, 8
jmp 0x41082c
mov eax, dword [edi + 0x18]
test eax, eax
mov esi, dword [ebp - 0x1a4]
je 0x410df7
test byte [eax + 0x44], 2
je 0x410dca
mov edx, 0x43
mov dword [eax + 0x38], edx
mov eax, dword [edi + 0x18]
mov dword [eax + 0x3c], edx
mov eax, dword [edi + 0x64]
test eax, eax
je 0x410db5
xor edx, edx
mov dword [eax + 4], edx
mov dword [edi + 0x64], edx
mov eax, 0x43
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
mov eax, 0x43
push eax
movzx edx, byte [edi + 0x16c]
push eax
and edx, 7
push edx
push 0xffffffffffffffff
push edi
call fcn.004299d0
add esp, 0x14
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push edi
mov eax, 0x43
push eax
push eax
push 1
call fcn.00415e60
add esp, 0x10
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
mov eax, dword [edi + 0x48]
movzx edx, byte [eax + 1]
shl edx, 8
movzx ecx, byte [eax]
or ecx, edx
movsx ecx, cx
cmp ecx, 0x20
jae 0x410c57
mov eax, 1
shl eax, cl
test eax, 0x400000c
je 0x410c57
mov eax, dword [edi + 0x18]
test eax, eax
mov esi, dword [ebp - 0x1a4]
je 0x410eb8
test byte [eax + 0x44], 2
je 0x410e8b
mov edx, 0x43
mov dword [eax + 0x38], edx
mov eax, dword [edi + 0x18]
mov dword [eax + 0x3c], edx
mov eax, dword [edi + 0x64]
test eax, eax
je 0x410e76
xor edx, edx
mov dword [eax + 4], edx
mov dword [edi + 0x64], edx
mov eax, 0x43
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
mov eax, 0x43
push eax
movzx edx, byte [edi + 0x16c]
push eax
and edx, 7
push edx
push 0xffffffffffffffff
push edi
call fcn.004299d0
add esp, 0x14
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push edi
mov eax, 0x43
push eax
push eax
push 1
call fcn.00415e60
add esp, 0x10
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
mov dword [ebp - 0x1c4], edx
mov edx, ecx
mov dword [ebp - 0x10], eax
test edx, edx
mov eax, dword [ebp - 0x1f4]
mov ecx, dword [ebp - 0x1f0]
mov ebx, dword [ebp - 0x1f8]
jne 0x411433
mov edx, dword [ebp - 0x1d0]
mov dword [ebp - 0x1f4], eax
mov dword [ebp - 0x1ec], edx
mov eax, dword [ebp - 0x1c8]
mov edx, dword [ebp - 0x1c4]
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x1cc], 0
lea eax, [edx + eax]
mov dword [ebp - 0x1e0], eax
mov eax, dword [ebp - 0x1f4]
je 0x411297
test byte [ebp - 0x1e4], 3
jne 0x4111d9
test cl, 3
jne 0x4111d9
cmp dword [ebp - 0x1ec], 4
je 0x411167
cmp dword [ebp - 0x1ec], 8
jne 0x41100e
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x1e0]
jae 0x41147b
mov dword [ebp - 0x1f8], ebx
mov dword [ebp - 0x214], edi
mov esi, esi
lea edi, [edi]
mov edx, dword [esi + 4]
mov edi, edx
mov ecx, edx
and edi, 0xff0000
shr ecx, 0x18
shr edi, 8
or ecx, edi
mov edi, edx
and edi, 0xff00
shl edi, 8
shl edx, 0x18
or ecx, edi
mov ebx, dword [esi]
or ecx, edx
mov edx, ebx
mov edi, ebx
mov dword [eax], ecx
and edx, 0xff0000
mov ecx, ebx
shr edi, 0x18
and ecx, 0xff00
shr edx, 8
shl ecx, 8
or edi, edx
shl ebx, 0x18
or edi, ecx
or edi, ebx
mov ebx, dword [ebp - 0x1ec]
add esi, ebx
mov dword [eax + 4], edi
add eax, ebx
cmp eax, dword [ebp - 0x1e0]
jb 0x410f90
mov edi, dword [ebp - 0x214]
mov eax, dword [ebp - 0x1c4]
mov ebx, dword [ebp - 0x1f8]
add dword [edi + 0x3c], eax
jmp 0x41082c
cmp dword [ebp - 0x1ec], 0x10
jne 0x41111e
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x1e0]
jae 0x41147b
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x1f8], ebx
mov dword [ebp - 0x214], edi
mov esi, eax
mov eax, dword [ebp - 0x28]
mov edi, dword [eax]
mov ecx, dword [eax + 4]
mov ebx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov edx, eax
mov dword [ebp - 0x398], edi
mov edi, eax
and edi, 0xff0000
shr edx, 0x18
shr edi, 8
or edx, edi
mov edi, eax
and edi, 0xff00
shl edi, 8
shl eax, 0x18
or edx, edi
or edx, eax
mov edi, ebx
mov dword [esi], edx
mov edx, ebx
and edx, 0xff0000
mov eax, ebx
shr edi, 0x18
and eax, 0xff00
shr edx, 8
shl eax, 8
or edi, edx
shl ebx, 0x18
or edi, eax
or edi, ebx
mov ebx, ecx
mov edx, ecx
and ebx, 0xff0000
mov eax, ecx
shr edx, 0x18
and eax, 0xff00
shr ebx, 8
shl eax, 8
or edx, ebx
shl ecx, 0x18
or edx, eax
or edx, ecx
mov dword [esi + 8], edx
mov edx, dword [ebp - 0x398]
mov ecx, edx
mov ebx, edx
and ecx, 0xff0000
mov eax, edx
shr ebx, 0x18
and eax, 0xff00
shr ecx, 8
shl eax, 8
or ebx, ecx
shl edx, 0x18
or ebx, eax
mov ecx, dword [ebp - 0x1ec]
or ebx, edx
mov dword [esi + 4], edi
mov dword [esi + 0xc], ebx
add esi, ecx
add dword [ebp - 0x28], ecx
cmp esi, dword [ebp - 0x1e0]
jb 0x41103b
mov edi, dword [ebp - 0x214]
mov eax, dword [ebp - 0x1c4]
mov ebx, dword [ebp - 0x1f8]
add dword [edi + 0x3c], eax
jmp 0x41082c
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x1e0]
jae 0x41147b
mov dword [ebp - 0x214], edi
mov edx, dword [ebp - 0x1e0]
mov ecx, dword [ebp - 0x1ec]
mov edi, eax
movzx eax, word [esi]
add esi, ecx
rol ax, 8
mov word [edi], ax
add edi, ecx
cmp edi, edx
jb 0x411141
mov edi, dword [ebp - 0x214]
mov eax, dword [ebp - 0x1c4]
add dword [edi + 0x3c], eax
jmp 0x41082c
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x1e0]
jae 0x41147b
mov dword [ebp - 0x1f8], ebx
mov dword [ebp - 0x214], edi
mov eax, dword [ebp - 0x1ec]
mov ebx, dword [ebp - 0x18]
mov edx, dword [esi]
mov edi, edx
mov ecx, edx
and edi, 0xff0000
shr ecx, 0x18
add esi, eax
shr edi, 8
or ecx, edi
mov edi, edx
and edi, 0xff00
shl edi, 8
shl edx, 0x18
or ecx, edi
or ecx, edx
mov dword [ebx], ecx
add ebx, eax
cmp ebx, dword [ebp - 0x1e0]
jb 0x41118b
mov edi, dword [ebp - 0x214]
mov eax, dword [ebp - 0x1c4]
mov ebx, dword [ebp - 0x1f8]
add dword [edi + 0x3c], eax
jmp 0x41082c
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x1e0]
jae 0x41147b
mov eax, dword [ebp - 0x1ec]
mov edx, eax
shr edx, 0x1f
add edx, eax
sar edx, 1
mov dword [ebp - 0x1f8], ebx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x214], edi
mov edi, eax
mov ebx, dword [ebp - 0x18]
cmp edi, 1
je 0x411489
cmp dword [ebp - 0x24], 0
jle 0x411271
xor ecx, ecx
lea eax, [edi + esi]
mov dword [ebp - 0x1c], eax
xor eax, eax
mov dword [ebp - 0x18], ebx
lea edx, [edi + ebx]
mov dword [ebp - 0x20], edx
xor edx, edx
mov dword [ebp - 0x28], esi
mov esi, dword [ebp - 0x28]
mov dword [ebp - 0x14], eax
mov edi, dword [ebp - 0x18]
movzx eax, byte [ecx + esi]
mov esi, dword [ebp - 0x1c]
movzx ebx, byte [edx + esi - 1]
xor eax, ebx
mov byte [ecx + edi], bl
inc ecx
movzx ebx, byte [edx + esi - 1]
dec edx
mov edi, dword [ebp - 0x20]
xor ebx, eax
mov eax, dword [ebp - 0x14]
mov byte [eax + edi - 1], bl
dec eax
cmp ecx, dword [ebp - 0x24]
jl 0x411232
mov edi, dword [ebp - 0x1ec]
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x28]
add ebx, edi
add esi, edi
cmp ebx, dword [ebp - 0x1e0]
jb 0x41120b
mov edi, dword [ebp - 0x214]
mov eax, dword [ebp - 0x1c4]
mov ebx, dword [ebp - 0x1f8]
add dword [edi + 0x3c], eax
jmp 0x41082c
test eax, eax
je 0x411413
test byte [ebp - 0x1e4], 7
jne 0x411413
test cl, 7
jne 0x411413
cmp dword [ebp - 0x1ec], 4
je 0x4113d0
cmp dword [ebp - 0x1ec], 8
jne 0x411320
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x1e0]
jae 0x411493
mov dword [ebp - 0x1f8], ebx
mov dword [ebp - 0x214], edi
mov ecx, dword [ebp - 0x1e0]
mov ebx, dword [ebp - 0x1ec]
mov edi, eax
mov eax, dword [esi]
mov edx, dword [esi + 4]
add esi, ebx
mov dword [edi], eax
mov dword [edi + 4], edx
add edi, ebx
cmp edi, ecx
jb 0x4112f4
mov edi, dword [ebp - 0x214]
mov eax, dword [ebp - 0x1c4]
mov ebx, dword [ebp - 0x1f8]
add dword [edi + 0x3c], eax
jmp 0x410d44
cmp dword [ebp - 0x1ec], 0x10
jne 0x41138b
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x1e0]
jae 0x411493
mov dword [ebp - 0x1f8], ebx
mov dword [ebp - 0x214], edi
mov eax, dword [ebp - 0x1e0]
mov ecx, dword [ebp - 0x1ec]
mov edx, dword [ebp - 0x18]
mov ebx, dword [esi]
mov edi, dword [esi + 4]
mov dword [edx], ebx
mov dword [edx + 4], edi
mov ebx, dword [esi + 8]
mov edi, dword [esi + 0xc]
add esi, ecx
mov dword [edx + 8], ebx
mov dword [edx + 0xc], edi
add edx, ecx
cmp edx, eax
jb 0x411353
mov edi, dword [ebp - 0x214]
mov eax, dword [ebp - 0x1c4]
mov ebx, dword [ebp - 0x1f8]
add dword [edi + 0x3c], eax
jmp 0x410d44
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x1e0]
jae 0x411493
mov dword [ebp - 0x214], edi
mov edx, dword [ebp - 0x1e0]
mov ecx, dword [ebp - 0x1ec]
mov edi, eax
movzx eax, word [esi]
add esi, ecx
mov word [edi], ax
add edi, ecx
cmp edi, edx
jb 0x4113ae
mov edi, dword [ebp - 0x214]
mov eax, dword [ebp - 0x1c4]
add dword [edi + 0x3c], eax
jmp 0x410d44
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x1e0]
jae 0x411493
mov dword [ebp - 0x214], edi
mov edx, dword [ebp - 0x1e0]
mov ecx, dword [ebp - 0x1ec]
mov edi, eax
mov eax, dword [esi]
add esi, ecx
mov dword [edi], eax
add edi, ecx
cmp edi, edx
jb 0x4113f3
mov edi, dword [ebp - 0x214]
mov eax, dword [ebp - 0x1c4]
add dword [edi + 0x3c], eax
jmp 0x410d44
push dword [ebp - 0x1c4]
push esi
push dword [ebp - 0x18]
call fcn.004aacb0
add esp, 0xc
mov eax, dword [ebp - 0x1a8]
add dword [edi + 0x3c], eax
jmp 0x410d44
push dword [ebp - 0x1c4]
push esi
push dword [ebp - 0x1c8]
call fcn.004aacb0
add esp, 0xc
mov eax, dword [ebp - 0x1a8]
add dword [edi + 0x3c], eax
cmp dword [ebp - 0x1cc], 0
je 0x410d44
mov eax, dword [ebp - 0x1d0]
mov edx, dword [ebp - 0x1dc]
mov dword [ebp - 0x1bc], eax
mov dword [ebp - 0x1c0], edx
jmp 0x410cbc
add esi, dword [ebp - 0x1c4]
mov dword [edi + 0x3c], esi
jmp 0x41082c
movzx eax, byte [esi]
mov byte [ebx], al
jmp 0x411271
add esi, dword [ebp - 0x1c4]
mov dword [edi + 0x3c], esi
jmp 0x410d44
jne 0x410caf
mov edx, dword [ebp + 0xc]
lea esi, [ebp - 0x1fc]
mov dword [esp + 0xc], esi
lea esi, [ebp - 0x210]
mov eax, dword [ebp - 0xc]
movsx ecx, byte [edx]
lea edx, [ebp - 0x208]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x20c]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], ecx
lea ecx, [ebp - 0x1c8]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x20], eax
mov eax, edi
mov dword [esp + 0x24], edx
lea edx, [ebp - 0x1a8]
call fcn.00411c70
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jne 0x41152a
cmp dword [ebp - 0x1cc], 0
je 0x410d44
mov eax, dword [ebp - 0x1d0]
mov edx, dword [ebp - 0x1dc]
mov dword [ebp - 0x1bc], eax
mov dword [ebp - 0x1c0], edx
jmp 0x410cbc
mov edx, dword [edi + 0x18]
test edx, edx
mov esi, dword [ebp - 0x1a4]
je 0x4115a3
test byte [edx + 0x44], 2
je 0x411571
mov eax, dword [ebp - 0x20c]
mov dword [edx + 0x38], eax
mov ecx, dword [edi + 0x18]
mov edx, dword [ebp - 0x208]
mov dword [ecx + 0x3c], edx
mov edx, dword [edi + 0x64]
test edx, edx
je 0x411561
xor ecx, ecx
mov dword [edx + 4], ecx
mov dword [edi + 0x64], ecx
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push dword [ebp - 0x208]
push dword [ebp - 0x20c]
movzx eax, byte [edi + 0x16c]
and eax, 7
push eax
push 0xffffffffffffffff
push edi
call fcn.004299d0
add esp, 0x14
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push edi
push dword [ebp - 0x208]
push dword [ebp - 0x20c]
push dword [ebp - 0x210]
call fcn.00415e60
add esp, 0x10
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
mov dword [ebp - 0x39c], eax
mov dword [ebp - 0x1f8], ebx
mov dword [ebp - 0x214], edi
mov eax, dword [ebp - 0x1bc]
lea esi, [esi]
lea edi, [edi]
mov ecx, dword [edx + 4]
mov edi, ecx
mov ebx, ecx
and edi, 0xff0000
shr ebx, 0x18
shr edi, 8
or ebx, edi
mov edi, ecx
and edi, 0xff00
shl edi, 8
shl ecx, 0x18
or ebx, edi
mov esi, dword [edx]
or ebx, ecx
mov ecx, esi
mov edi, esi
mov dword [edx], ebx
and ecx, 0xff0000
mov ebx, esi
shr edi, 0x18
and ebx, 0xff00
shr ecx, 8
shl ebx, 8
or edi, ecx
shl esi, 0x18
or edi, ebx
or edi, esi
mov dword [edx + 4], edi
add edx, eax
cmp edx, dword [ebp - 0x39c]
jb 0x4115f0
mov ebx, dword [ebp - 0x1f8]
mov edi, dword [ebp - 0x214]
jmp 0x41082c
mov dword [ebp - 0x39c], eax
mov dword [ebp - 0x1f8], ebx
mov dword [ebp - 0x214], edi
mov esi, edx
mov edi, dword [esi]
mov edx, dword [esi + 0xc]
mov ecx, edx
mov dword [ebp - 0x3a0], edi
mov edi, edx
and edi, 0xff0000
shr ecx, 0x18
shr edi, 8
or ecx, edi
mov edi, edx
and edi, 0xff00
shl edi, 8
shl edx, 0x18
or ecx, edi
mov ebx, dword [esi + 8]
or ecx, edx
mov edx, ebx
mov edi, ebx
mov dword [esi], ecx
and edx, 0xff0000
mov ecx, ebx
shr edi, 0x18
and ecx, 0xff00
shr edx, 8
shl ecx, 8
or edi, edx
shl ebx, 0x18
or edi, ecx
mov eax, dword [esi + 4]
or edi, ebx
mov ebx, eax
mov ecx, eax
and ebx, 0xff0000
mov edx, eax
shr ecx, 0x18
and edx, 0xff00
shr ebx, 8
shl edx, 8
or ecx, ebx
shl eax, 0x18
or ecx, edx
or ecx, eax
mov dword [esi + 8], ecx
mov ecx, dword [ebp - 0x3a0]
mov eax, ecx
mov ebx, ecx
and eax, 0xff0000
mov edx, ecx
shr ebx, 0x18
and edx, 0xff00
shr eax, 8
shl edx, 8
or ebx, eax
shl ecx, 0x18
or ebx, edx
or ebx, ecx
mov dword [esi + 4], edi
mov dword [esi + 0xc], ebx
add esi, dword [ebp - 0x1bc]
cmp esi, dword [ebp - 0x39c]
jb 0x411671
mov ebx, dword [ebp - 0x1f8]
mov edi, dword [ebp - 0x214]
jmp 0x41082c
mov edx, dword [ebp - 0x1bc]
mov ecx, dword [ebp - 0x1c0]
rol word [ecx], 8
add ecx, edx
cmp ecx, eax
jb 0x411751
jmp 0x41082c
mov dword [ebp - 0x1f8], ebx
mov dword [ebp - 0x214], edi
mov edx, dword [ebp - 0x1bc]
mov esi, dword [ebp - 0x1c0]
mov ecx, dword [esi]
mov edi, ecx
mov ebx, ecx
and edi, 0xff0000
shr ebx, 0x18
shr edi, 8
or ebx, edi
mov edi, ecx
and edi, 0xff00
shl edi, 8
shl ecx, 0x18
or ebx, edi
or ebx, ecx
mov dword [esi], ebx
add esi, edx
cmp esi, eax
jb 0x411778
mov ebx, dword [ebp - 0x1f8]
mov edi, dword [ebp - 0x214]
jmp 0x41082c
mov edx, dword [ebp - 0x1bc]
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sar ecx, 1
test ecx, ecx
jle 0x41082c
mov dword [ebp - 0x39c], eax
xor edx, edx
mov dword [ebp - 0x200], ecx
mov dword [ebp - 0x1f8], ebx
mov dword [ebp - 0x214], edi
mov eax, dword [ebp - 0x1c0]
mov ecx, dword [ebp - 0x1bc]
mov ebx, edx
mov dword [ebp - 0x1c0], eax
mov edi, ebx
lea esi, [ecx + eax]
mov ecx, eax
movzx eax, byte [edi + esi - 1]
inc ebx
movzx edx, byte [ecx]
xor edx, eax
mov byte [ecx], al
inc ecx
xor byte [edi + esi - 1], dl
dec edi
cmp ebx, dword [ebp - 0x200]
jl 0x411803
mov eax, dword [ebp - 0x1c0]
xor edx, edx
add eax, dword [ebp - 0x1bc]
cmp eax, dword [ebp - 0x39c]
jb 0x4117ee
mov ebx, dword [ebp - 0x1f8]
mov edi, dword [ebp - 0x214]
jmp 0x41082c
mov edx, dword [edi + 0x18]
test edx, edx
mov esi, dword [ebp - 0x1a4]
je 0x4118a8
test byte [edx + 0x44], 2
je 0x411880
mov dword [edx + 0x38], eax
mov edx, dword [edi + 0x18]
mov dword [edx + 0x3c], eax
mov edx, dword [edi + 0x64]
test edx, edx
je 0x411870
xor ecx, ecx
mov dword [edx + 4], ecx
mov dword [edi + 0x64], ecx
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push eax
movzx edx, byte [edi + 0x16c]
push eax
and edx, 7
push edx
push 0xffffffffffffffff
push edi
call fcn.004299d0
add esp, 0x14
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push edi
push eax
push eax
push 1
call fcn.00415e60
add esp, 0x10
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x10]
mov esi, dword [ebp - 0x1a4]
cmp dword [ebp - 0x1d4], 1
jne 0x411a88
cmp byte [edi + 0x154], 3
je 0x411ae0
test dl, 0x40
jne 0x4119d9
cmp dword [edi + 0x138], 7
jne 0x4119d9
cmp dword [ebp - 0x1fc], 0
jne 0x4119d9
xor edx, edx
lea eax, [ebp - 0x1fc]
mov dword [esp + 0xc], eax
lea ecx, [ebp - 0x208]
mov dword [esp + 0x10], edx
mov eax, edi
mov dword [esp + 0x14], ebx
lea ebx, [ebp - 0x210]
mov dword [esp + 0x18], 1
mov dword [ebp - 0x1a8], edx
lea edx, [ebp - 0x20c]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], edx
lea edx, [ebp - 0x1a8]
mov dword [esp + 0x24], ecx
lea ecx, [ebp - 0x1c8]
call fcn.00411c70
test eax, eax
je 0x4119d9
mov edx, dword [edi + 0x18]
test edx, edx
je 0x411a98
test byte [edx + 0x44], 2
je 0x4119a7
mov eax, dword [ebp - 0x20c]
mov dword [edx + 0x38], eax
mov ecx, dword [edi + 0x18]
mov edx, dword [ebp - 0x208]
mov dword [ecx + 0x3c], edx
mov edx, dword [edi + 0x64]
test edx, edx
je 0x411997
xor ecx, ecx
mov dword [edx + 4], ecx
mov dword [edi + 0x64], ecx
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push dword [ebp - 0x208]
push dword [ebp - 0x20c]
movzx eax, byte [edi + 0x16c]
and eax, 7
push eax
push 0xffffffffffffffff
push edi
call fcn.004299d0
add esp, 0x14
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
mov eax, dword [edi + 0x3c]
sub eax, dword [edi + 0x38]
mov ecx, dword [edi + 0xc0]
cdq
add ecx, eax
push dword [edi + 0x100]
mov dword [edi + 0xb8], ecx
adc edx, dword [edi + 0xc4]
and byte [edi + 0x16c], 0xdc
and byte [edi + 0x16e], 0xf7
mov dword [edi + 0xbc], edx
call fcn.00423830
add esp, 4
test eax, eax
je 0x411a7b
mov edx, dword [edi + 0x18]
test edx, edx
je 0x411ac3
test byte [edx + 0x44], 2
je 0x411a53
mov dword [edx + 0x38], eax
mov edx, dword [edi + 0x18]
mov dword [edx + 0x3c], eax
mov edx, dword [edi + 0x64]
test edx, edx
je 0x411a43
xor ecx, ecx
mov dword [edx + 4], ecx
mov dword [edi + 0x64], ecx
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push eax
movzx edx, byte [edi + 0x16c]
push eax
and edx, 7
push edx
push 0xffffffffffffffff
push edi
call fcn.004299d0
add esp, 0x14
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp - 0x204]
mov dword [edx + 4], 0
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push edi
push dword [ebp - 0x208]
push dword [ebp - 0x20c]
push dword [ebp - 0x210]
call fcn.00415e60
add esp, 0x10
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push edi
push eax
push eax
push 0
call fcn.00415e60
add esp, 0x10
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
mov ecx, dword [edi + 0x48]
movzx eax, byte [ecx]
movzx ecx, byte [ecx + 1]
shl ecx, 8
or eax, ecx
movsx eax, ax
cmp eax, 0x1a
je 0x4118e8
mov dword [ebp - 0x1a4], esi
xor esi, esi
cmp eax, 2
je 0x411b33
cmp eax, 3
je 0x411b33
push esi
push esi
push edi
call fcn.00437e30
add esp, 0xc
test eax, eax
jne 0x411b45
mov eax, dword [edi + 0x3c]
movzx edx, byte [eax + 1]
shl edx, 8
movzx ecx, byte [eax]
or ecx, edx
movsx eax, cx
cmp eax, 0x1a
jne 0x411b03
mov esi, dword [ebp - 0x1a4]
movzx edx, byte [edi + 0x16f]
jmp 0x4118e8
mov edx, dword [edi + 0x18]
test edx, edx
mov esi, dword [ebp - 0x1a4]
je 0x411ba8
test byte [edx + 0x44], 2
je 0x411b80
mov dword [edx + 0x38], eax
mov edx, dword [edi + 0x18]
mov dword [edx + 0x3c], eax
mov edx, dword [edi + 0x64]
test edx, edx
je 0x411b70
xor ecx, ecx
mov dword [edx + 4], ecx
mov dword [edi + 0x64], ecx
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push eax
movzx edx, byte [edi + 0x16c]
push eax
and edx, 7
push edx
push 0xffffffffffffffff
push edi
call fcn.004299d0
add esp, 0x14
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push edi
push eax
push eax
push 1
call fcn.00415e60
add esp, 0x10
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
mov dword [ebp - 4], 1
jmp 0x41079f
mov edx, dword [edi + 0x18]
test edx, edx
mov esi, dword [ebp - 0x1a4]
je 0x411c34
test byte [edx + 0x44], 2
je 0x411c0c
mov dword [edx + 0x38], eax
mov edx, dword [edi + 0x18]
mov dword [edx + 0x3c], eax
mov edx, dword [edi + 0x64]
test edx, edx
je 0x411bfc
xor ecx, ecx
mov dword [edx + 4], ecx
mov dword [edi + 0x64], ecx
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push eax
movzx edx, byte [edi + 0x16c]
push eax
and edx, 7
push edx
push 0xffffffffffffffff
push edi
call fcn.004299d0
add esp, 0x14
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
push edi
push eax
push eax
push 1
call fcn.00415e60
add esp, 0x10
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret
xor eax, eax
mov esi, dword [ebp - 0x1a4]
mov ebx, dword [ebp - 0x1ac]
mov edi, dword [ebp - 0x1b0]
mov esp, ebp
pop ebp
ret