Function at 0x4606e0
Capabilities:
Encrypt data using speck
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x308
mov esi, dword [esp + 0x31c]
mov ebx, 0x10
mov byte [esp + 0x39], 0x2f
mov dword [esp + 0x304], 0
lea eax, [esp + 0x2f8]
mov dword [esp], eax
mov dword [esp + 8], 0xc
mov dword [esp + 4], 0
call fcn.007c51a0
lea eax, [esp + 0x304]
mov dword [esp + 8], eax
mov dword [esp], esi
mov dword [esp + 4], 0x13
call fcn.004585b0
test eax, eax
jne 0x460817
mov ecx, 0x13
mov edx, eax
or edx, 2
xor eax, 2
add eax, edx
mov dword [esp + 0x8c], eax
mov dword [esp + 0x3c], eax
mov byte [esp + 0xa2], al
mov byte [esp + 0x63], al
mov byte [esp + 0x93], al
mov byte [esp + 0x47], al
mov byte [esp + 0xa3], al
mov byte [esp + 0xb7], al
mov byte [esp + 0x3a], al
mov byte [esp + 0x3b], al
mov dword [esp + 0xb0], eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0xa4], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0xac], eax
jne 0x461ab5
jmp 0x4608cc
mov dword [esp + 0x8c], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0xb0], eax
mov byte [esp + 0xa2], al
mov byte [esp + 0x63], al
mov byte [esp + 0x93], al
mov byte [esp + 0x47], al
mov byte [esp + 0xa3], al
mov byte [esp + 0xb7], al
mov byte [esp + 0x3a], al
mov byte [esp + 0x3b], al
mov dword [esp + 0x5c], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0xa4], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0xac], eax
cmp ebx, 0xe
je 0x461117
imul ebx, ebx
and ebx, 3
cmp ebx, 2
je 0x461117
mov edi, 9
mov byte [esp + 0xb7], 0x59
mov eax, dword [esp + 0x304]
mov eax, dword [eax]
mov dword [esp], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0x45ac80
call fcn.00435c50
mov eax, dword [esp + 0x304]
mov eax, dword [eax]
mov dword [esp], eax
call fcn.004384f0
mov esi, eax
test esi, esi
jne 0x460e02
mov eax, 0x10
mov dword [esp + 0x2f8], 0x70000027
mov dword [esp + 0xa8], 0
mov dword [esp + 0xa4], 0
cmp eax, 0x10
jne 0x460967
mov ecx, 3
sub ecx, eax
xor ecx, eax
jne 0x461b07
mov edi, 0xa
mov eax, dword [esi + 0x26c]
mov ecx, dword [esp + 0x304]
mov dword [ecx], eax
mov eax, dword [esi + 0x1b8]
mov ecx, dword [esi + 0x1bc]
lea edx, [esi + 0x274]
mov ebp, esi
mov esi, dword [esp + 0x304]
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov eax, dword [esp + 0x31c]
mov dword [esp], eax
mov dword [esp + 0x18], 1
mov dword [esp + 0x14], 0x13
call fcn.00459370
mov dword [esp + 0x88], 0
mov dword [esp + 0x84], 0
cmp edi, 5
je 0x4609ef
imul edi, edi
and edi, 3
cmp edi, 2
jne 0x4614cd
mov byte [esp + 0x3a], 0x32
mov bl, 0x12
mov esi, ebp
lea eax, [esi + 0x3c8]
mov dword [esp + 0x54], eax
mov eax, dword [esi + 0x3c8]
mov ecx, dword [esi + 0x3cc]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.0041f570
test eax, eax
jne 0x461078
mov edi, 0x14
mov ecx, eax
or ecx, 2
mov edx, eax
xor edx, 2
add edx, ecx
je 0x461078
cmp edi, 0xd
je 0x460a58
xor ecx, ecx
test cl, cl
jne 0x460a58
mov dword [esp + 0xac], eax
mov dword [esp + 0x2f8], 0x70000027
jmp 0x460a8c
mov byte [esp + 0x3b], 0x7d
mov dword [esp], eax
mov dword [esp + 0xac], eax
call fcn.0040ec40
test eax, eax
je 0x461117
jmp 0x4612ba
mov al, 0x6a
movzx eax, al
cmp eax, 0x35
mov dword [esp + 0x2f8], 0x70000055
mov dword [esp + 0xa8], 0
mov dword [esp + 0xa4], 0
jmp 0x461b07
mov eax, dword [esi + 0x390]
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x460a79
mov edi, 0x1b
mov byte [esp + 0x3a], 0x32
mov dword [esp], esi
call fcn.0040b5f0
test eax, eax
je 0x460fd7
mov cl, 0x35
mov eax, 0xa
movzx ecx, cl
cmp ecx, 0x35
je 0x461bc3
mov eax, 0x18
cmp ecx, 0x62
jne 0x460953
mov edi, 7
mov eax, dword [esi + 0x26c]
mov ecx, dword [esp + 0x304]
mov dword [ecx], eax
mov eax, dword [esi + 0x1b8]
mov ecx, dword [esi + 0x1bc]
lea edx, [esi + 0x274]
mov ebx, dword [esp + 0x304]
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov dword [esp + 4], ebx
mov eax, dword [esp + 0x31c]
mov dword [esp], eax
mov dword [esp + 0x18], 1
mov dword [esp + 0x14], 0x13
call fcn.00459370
mov dword [esp + 0x88], 0
mov dword [esp + 0x84], 0
jmp 0x460da6
mov byte [esp + 0x47], 0x2c
cmp dword [esi + 0x3b8], 0
je 0x460bf0
mov edi, 0xe
call fcn.0044c050
mov dword [esp + 0xc], edx
mov dword [esp + 8], eax
mov ebp, dword [esp + 0xb0]
mov dword [esp + 4], ebp
mov ebx, dword [esp + 0xac]
mov dword [esp], ebx
call fcn.0040fbe0
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
je 0x460dc6
mov eax, 0x12
mov dword [esp + 0x2f8], 0x70000029
mov dword [esp + 0xa8], ebx
mov dword [esp + 0xa4], ebp
cmp eax, 6
je 0x460d48
jmp 0x461b07
mov bl, 0x59
call fcn.00455fb0
test eax, eax
jne 0x460c06
mov ecx, 3
sub ecx, eax
xor ecx, eax
jne 0x460c6f
lea edi, [esi + 0x88]
lea ecx, [esi + 8]
mov eax, dword [esp + 0x3c]
mov edx, dword [eax]
mov eax, dword [esi + 0x3c0]
mov dword [esp + 0x34], eax
mov ebp, dword [esi + 0x3d0]
mov eax, esi
mov ebx, dword [esp + 0x54]
mov esi, dword [ebx]
mov ebx, dword [ebx + 4]
mov dword [esp + 0x24], edi
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x18], ebp
mov ecx, dword [esp + 0x31c]
mov dword [esp + 0x14], ebx
mov bl, 0x59
mov dword [esp + 0x10], esi
mov esi, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0xc], eax
mov dword [esp + 8], esi
mov dword [esp], ecx
mov dword [esp + 4], str.decrypt
call fcn.004582d0
mov eax, 7
movzx ecx, bl
cmp ecx, 0x2b
je 0x461758
mov edx, 0x11
cmp ecx, 0x3e
je 0x4610cf
mov ebx, 0xe
cmp ecx, 0x59
jne 0x460e27
lea eax, [esp + 0xb8]
mov dword [esp + 0x9c], eax
mov eax, 6
mov byte [esp + 0xa3], 0x6f
mov edx, dword [esp + 0xb0]
lea ecx, [edx + 8]
mov dword [esp + 0x50], ecx
mov edx, dword [edx + 8]
mov dword [esp + 0x94], 4
cmp edx, 4
jne 0x460cf1
mov ecx, edx
or ecx, 2
mov dword [esp + 0x40], edx
xor edx, 2
add edx, ecx
jne 0x461850
jmp 0x460be2
mov dword [esp + 0x40], edx
jmp 0x460be2
lea eax, [esp + 0xb8]
mov dword [esp + 0x9c], eax
mov eax, 0xb
mov byte [esp + 0xa3], 0x6f
mov edx, dword [esp + 0xb0]
lea ecx, [edx + 8]
mov dword [esp + 0x50], ecx
mov ecx, dword [edx + 8]
mov dword [esp + 0x40], ecx
cmp ecx, 4
mov dword [esp + 0x94], 4
je 0x461510
xor ecx, ecx
test cl, cl
jne 0x461510
mov eax, dword [esp + 0x304]
movzx ecx, word [eax + 6]
cmp ecx, 3
je 0x460d84
mov edx, ecx
and edx, 1
inc edx
xor edx, ecx
je 0x460d84
mov cl, 1
movzx ecx, cl
cmp ecx, 0x40
mov eax, dword [eax + 0x14]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x94], eax
jmp 0x461850
mov al, 0x7b
mov edi, 0x14
movzx eax, al
cmp eax, 0x6a
je 0x460dc6
mov edi, 0x13
mov ebx, 0xd
cmp eax, 0x7b
je 0x461a70
cmp edi, 7
jne 0x460e8a
mov eax, edi
or eax, 2
xor edi, 2
add edi, eax
je 0x460e8a
mov ebp, esi
jmp 0x4614cd
cmp edi, 0xe
je 0x460bf0
xor eax, eax
test al, al
jne 0x460bf0
mov ebx, 0x16
mov dword [esp], 0x20
call fcn.00492770
test eax, eax
je 0x460e23
mov edi, 4
mov dword [esp + 0x58], eax
imul eax, eax
and eax, 3
cmp eax, 3
je 0x460e27
cmp edi, 4
jne 0x460aa7
mov eax, edi
and eax, 1
xor eax, edi
not eax
test eax, eax
je 0x460aa7
mov ebp, esi
jmp 0x4617d7
mov dword [esp + 0x58], eax
cmp ebx, 0xe
je 0x460e39
xor eax, eax
test al, al
jne 0x460e39
mov ebp, esi
jmp 0x461ade
lea eax, [esp + 0xb8]
mov dword [esp + 0x9c], eax
mov byte [esp + 0xa3], 0x6f
mov ecx, dword [esp + 0xb0]
lea eax, [ecx + 8]
mov dword [esp + 0x50], eax
mov ecx, dword [ecx + 8]
cmp ecx, 4
mov dword [esp + 0x94], 4
je 0x460eb4
mov eax, ecx
mov dword [esp + 0x40], ecx
imul eax, eax
and eax, 3
cmp eax, 3
jne 0x460d48
jmp 0x461850
mov ebx, 0xe
mov dword [esp], 0x20
call fcn.00492770
test eax, eax
je 0x460ebd
mov dword [esp + 0x58], eax
mov ebp, esi
xor eax, eax
test al, al
je 0x4617d7
jmp 0x4619b9
mov dword [esp + 0x40], ecx
jmp 0x461850
mov dword [esp + 0x58], eax
mov ebp, esi
jmp 0x4619b9
mov al, 0x1b
mov ecx, dword [esp + 0x94]
lea ecx, [ecx + ecx*8]
mov ecx, dword [ecx*8 + 0x7f61bc]
mov dword [esp + 0x7c], ecx
mov edx, dword [esp + 0x304]
mov dword [esp + 0x78], edx
mov ecx, dword [edx + 0x10]
mov dword [esp + 0x74], ecx
mov ecx, dword [edx + 0x18]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x31c]
mov edi, dword [ecx]
mov ecx, dword [ecx + 8]
add edi, 0xc
mov dword [esp + 0x80], edi
cmp ecx, 1
mov edx, dword [edx + 0x1c]
mov dword [esp + 0x6c], edx
jne 0x460f50
mov byte [esp + 0xa2], bl
mov ebp, esi
mov byte [esp + 0xa3], 0x6f
mov edi, 0xb
mov edx, ecx
or edx, 2
xor ecx, 2
add ecx, edx
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x98], ecx
jne 0x461b7d
jmp 0x460f61
mov byte [esp + 0xa2], bl
mov ebp, esi
mov byte [esp + 0xa3], 0x6f
movzx eax, al
cmp eax, 0x1b
je 0x460fa2
mov edi, 0xc
cmp eax, 0x60
je 0x460fc7
cmp eax, 0x77
mov esi, ebp
jne 0x460ff8
mov ecx, 0xa
mov eax, dword [esp + 0x80]
mov eax, dword [eax]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x98], eax
jmp 0x461162
mov eax, dword [esp + 0x80]
mov eax, dword [eax]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x98], eax
mov esi, ebp
jmp 0x461354
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x98], eax
mov esi, ebp
cmp edi, 0xc
je 0x461020
xor eax, eax
test al, al
jne 0x461020
mov edi, 5
movzx eax, byte [esp + 0x3a]
cmp eax, 4
jne 0x461035
mov ebp, esi
jmp 0x4609db
mov edi, 0x15
mov eax, dword [esp + 0x80]
mov eax, dword [eax]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x98], eax
jmp 0x4611bf
mov eax, dword [esp + 0x80]
mov eax, dword [eax]
mov dword [esp + 0x8c], eax
jmp 0x461354
mov byte [esp + 0x3a], 4
mov bl, 0x12
lea eax, [esi + 0x3c8]
mov dword [esp + 0x54], eax
mov eax, dword [esi + 0x3c8]
mov ecx, dword [esi + 0x3cc]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.0041f570
test eax, eax
jne 0x461078
mov edi, 1
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
jb 0x46125a
mov edx, 4
movzx ecx, bl
cmp ecx, 8
je 0x4610c8
mov edi, 0xd
cmp ecx, 0x1d
je 0x460a39
cmp ecx, 0x42
jne 0x461288
mov byte [esp + 0x3b], 0x7d
mov dword [esp], eax
mov dword [esp + 0xac], eax
call fcn.0040ec40
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x4612ba
jmp 0x461117
mov dword [esp + 0xac], eax
cmp edx, 4
jne 0x4611fb
mov ecx, edx
or ecx, 2
xor edx, 2
add edx, ecx
je 0x4611fb
mov edi, 0xf
mov byte [esp + 0x3b], 0x7d
mov eax, dword [esp + 0xac]
mov dword [esp], eax
call fcn.0040ec40
mov ecx, eax
and ecx, 1
inc ecx
xor ecx, eax
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x4611bf
mov byte [esp + 0x47], 0x3f
lea eax, [esi + 0x3d4]
mov dword [esp + 0x3c], eax
mov eax, dword [esi + 0x3d4]
mov edx, dword [esp + 0x54]
mov ecx, dword [edx]
mov edx, dword [edx + 4]
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], ecx
call fcn.00427270
test eax, eax
je 0x46119e
mov ecx, 0xe
mov edx, eax
imul edx, edx
and edx, 3
cmp edx, 3
je 0x46119e
mov dword [esp + 0xb0], eax
mov eax, 3
cmp ecx, 0xa
jne 0x46117b
mov edx, 3
sub edx, ecx
xor edx, ecx
jne 0x461354
mov edi, 0xa
movzx ecx, byte [esp + 0x47]
cmp ecx, 0xf
je 0x461617
cmp ecx, 0x2c
je 0x460b74
mov ebp, esi
jmp 0x461794
mov dword [esp + 0xb0], eax
mov al, 0x30
movzx eax, al
cmp eax, 0x30
jne 0x4611cd
mov dword [esp + 0x2f8], 0x70000027
jmp 0x4612d4
cmp edi, 0xf
jne 0x461354
jmp 0x4612ba
mov eax, 0x10
mov dword [esp + 0x2f8], 0x70000027
mov dword [esp + 0xa4], 0
mov ecx, dword [esp + 0xac]
mov dword [esp + 0xa8], ecx
jmp 0x4617c9
lea eax, [esp + 0xb8]
mov dword [esp + 0x9c], eax
mov ecx, 0x14
mov edx, dword [esp + 0xb0]
lea eax, [edx + 8]
mov dword [esp + 0x50], eax
mov edx, dword [edx + 8]
cmp edx, 4
mov dword [esp + 0x94], 4
je 0x461322
mov byte [esp + 0xa3], 0x6f
mov edi, 0xe
mov dword [esp + 0x40], edx
imul edx, edx
and edx, 3
cmp edx, 2
mov eax, dword [esp + 0xac]
je 0x461335
mov dword [esp + 0xac], eax
mov ecx, 3
sub ecx, edi
xor ecx, edi
setne cl
movzx ecx, cl
cmp edi, ecx
jne 0x460d48
mov dword [esp + 0x2f8], 0x70000027
jmp 0x460a8c
mov ebx, 0xe
mov byte [esp + 0x3b], 0x7d
mov dword [esp], eax
mov dword [esp + 0xac], eax
call fcn.0040ec40
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
je 0x4608cc
movzx eax, byte [esp + 0x3b]
cmp eax, 0x3b
jne 0x4612f2
mov byte [esp + 0x3b], 0x3b
mov dword [esp + 0x2f8], 0x70000054
mov dword [esp + 0xa4], 0
mov eax, dword [esp + 0xac]
mov dword [esp + 0xa8], eax
jmp 0x461b07
mov ecx, 0xc
mov byte [esp + 0x3b], 0x7d
mov dword [esp + 0x2f8], 0x70000054
mov dword [esp + 0xa4], 0
mov eax, dword [esp + 0xac]
mov dword [esp + 0xa8], eax
jmp 0x461335
mov dword [esp + 0x40], edx
mov byte [esp + 0xa3], 0x6f
mov eax, dword [esp + 0xac]
mov dword [esp + 0xac], eax
cmp ecx, 0xc
je 0x461b07
xor eax, eax
test al, al
je 0x461850
jmp 0x461b07
mov ebx, 0xd
lea eax, [esp + 0x2fc]
mov ebp, dword [esp + 0x78]
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov edi, esi
movzx esi, word [ebp + 6]
mov ebp, dword [esp + 0x70]
mov dword [esp + 0x30], ebp
mov ebp, dword [esp + 0x74]
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x6c]
mov dword [esp + 0x28], ebp
mov ebp, dword [esp + 0x8c]
mov dword [esp + 0x24], ebp
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], esi
mov esi, edi
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x98]
mov dword [esp + 0xc], eax
mov dword [esp + 8], esi
mov eax, dword [esp + 0xb0]
mov dword [esp + 4], eax
mov edi, dword [esp + 0xac]
mov dword [esp], edi
mov dword [esp + 0x14], 1
call dword [esp + 0x7c]
mov dword [esp + 0x5c], eax
mov ecx, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete cl
movzx ecx, cl
cmp eax, ecx
jne 0x461646
mov eax, dword [esp + 0x2fc]
mov dword [esp], eax
call fcn.00492770
mov dword [esp + 0x300], eax
test eax, eax
jne 0x46142c
mov ecx, 3
sub ecx, eax
xor ecx, eax
je 0x46142c
mov al, 0x2f
movzx eax, al
cmp eax, 0x2f
mov dword [esp + 0x2f8], 0x70000003
jmp 0x461455
mov ecx, dword [esp + 0x2fc]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x98]
mov dword [esp + 4], ecx
mov dword [esp], eax
call fcn.007c51d0
mov dword [esp + 0x2f8], 0
mov dword [esp + 0xa8], edi
mov eax, dword [esp + 0xb0]
mov dword [esp + 0xa4], eax
jmp 0x461b07
mov byte [esp + 0xb7], 0x45
lea eax, [esp + 0x2f8]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x31c]
mov dword [esp], eax
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x15
call fcn.00458d20
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x84], eax
mov ecx, dword [esp + 0x300]
test ecx, ecx
je 0x46153c
mov byte [esp + 0xa2], 0x4f
mov eax, 0xf
mov dword [esp + 0x4c], ecx
imul ecx, ecx
and ecx, 3
cmp ecx, 3
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x84]
mov dword [esp + 0x64], ecx
mov esi, ebp
je 0x46170d
cmp eax, 0xb
jne 0x461526
mov ecx, eax
and ecx, 1
xor ecx, eax
not ecx
test ecx, ecx
jne 0x461850
mov edi, 0xf
mov eax, dword [esp + 0x4c]
mov dword [esp], eax
call fcn.004936c0
jmp 0x4616fd
mov dword [esp + 0x4c], ecx
mov byte [esp + 0xa2], 0x4f
mov eax, dword [esp + 0x88]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x64], eax
mov esi, ebp
jmp 0x46170d
mov ecx, dword [esp + 0x304]
test ecx, ecx
jne 0x46159b
mov byte [esp + 0xa2], 0x25
mov byte [esp + 0x63], 0x11
mov byte [esp + 0x93], 0x17
mov eax, ecx
or eax, 2
mov dword [esp + 0x48], ecx
xor ecx, 2
add ecx, eax
jne 0x461a0e
jmp 0x4615b4
mov byte [esp + 0xa2], 0x25
mov dword [esp + 0x48], ecx
mov byte [esp + 0x63], 0x11
mov byte [esp + 0x93], 0x17
movzx eax, byte [esp + 0x63]
cmp eax, 7
je 0x4615d6
cmp eax, 0x11
je 0x4615f9
cmp eax, 0x34
jne 0x461677
mov byte [esp + 0x63], 0x34
jmp 0x46167c
mov edi, 0x1a
mov byte [esp + 0x63], 7
mov eax, dword [esp + 0x48]
mov dword [esp], eax
mov dword [esp + 4], 0x13
call fcn.0064bf00
jmp 0x4619fa
mov edi, 0xc
mov byte [esp + 0x63], 0x11
mov eax, dword [esp + 0x48]
mov dword [esp], eax
mov dword [esp + 4], 0x13
call fcn.0064bf00
cmp edi, 0xa
jne 0x461a0e
mov eax, 3
sub eax, edi
xor eax, edi
je 0x461a0e
mov ebx, 0x11
mov byte [esp + 0x47], 0x3f
cmp dword [esi + 0x3b8], 0
jne 0x460b82
cmp ebx, 0xd
je 0x461659
mov eax, ebx
and eax, 1
inc eax
xor eax, ebx
jne 0x460bf0
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x2f8], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0xa8], eax
jmp 0x46145c
mov byte [esp + 0x63], 2
mov eax, dword [esp + 0x48]
mov dword [esp], eax
mov dword [esp + 4], 0x13
call fcn.0064bf00
jmp 0x461a0e
mov dword [esp + 0x304], 0
mov dword [esp], esi
call fcn.00435360
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call fcn.004234b0
mov eax, dword [esp + 0x68]
mov dword [esp], eax
call fcn.0041d160
add esp, 0x308
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x31c]
mov dword [esp], eax
call fcn.0040a2e0
jmp 0x4616c0
movzx eax, dl
cmp eax, 0x46
je 0x4616cb
mov edi, 7
mov byte [esp + 0x39], 0x2f
mov eax, dword [esp + 0x31c]
mov dword [esp], eax
call fcn.0040a2e0
cmp edi, 7
je 0x4616c0
imul edi, edi
and edi, 3
cmp edi, 2
je 0x4616c0
mov eax, 9
mov bl, byte [esp + 0xa2]
movzx ecx, bl
cmp ecx, 0x4f
je 0x4619dd
mov eax, dword [esp + 0x304]
test eax, eax
je 0x461776
mov byte [esp + 0xa2], 0x4f
mov dword [esp + 0x48], eax
mov byte [esp + 0x63], 0x11
mov byte [esp + 0x93], 0x17
mov eax, 4
xor ecx, ecx
test cl, cl
jne 0x461a0e
cmp eax, 4
jne 0x460cfa
mov ecx, eax
or ecx, 2
xor eax, 2
add eax, ecx
jne 0x4615b4
jmp 0x460cfa
mov byte [esp + 0xa2], 0x4f
mov dword [esp + 0x48], eax
mov byte [esp + 0x63], 0x11
mov byte [esp + 0x93], 0x17
jmp 0x461a0e
cmp eax, 3
jne 0x4617d7
mov eax, 0x1f
mov edi, 0xd
mov byte [esp + 0x47], 0xf
mov esi, ebp
mov ecx, dword [esi + 0x3b8]
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 2
sete dl
movzx edx, dl
cmp ecx, edx
jne 0x4619fa
cmp eax, 0x10
jne 0x460bf0
jmp 0x461b07
lea esi, [esp + 0x2d8]
mov dword [esp + 0x9c], esi
mov eax, dword [esp + 0x304]
mov eax, dword [eax + 0x14]
mov dword [esp + 4], eax
mov edi, dword [esp + 0x58]
mov dword [esp], edi
mov dword [esp + 8], 0x10
call fcn.007c51d0
mov eax, dword [esp + 0x304]
mov eax, dword [eax + 0x14]
mov dword [esp], eax
call fcn.004936c0
mov eax, dword [esp + 0x304]
mov dword [eax + 0x14], edi
mov eax, dword [esp + 0x304]
mov eax, dword [eax + 0x14]
mov dword [esp + 4], eax
mov dword [esp], esi
mov dword [esp + 8], 0x10
call fcn.007c51d0
mov eax, dword [esp + 0x50]
mov eax, dword [eax]
mov dword [esp + 0x94], eax
mov esi, ebp
mov al, byte [esp + 0xa3]
movzx ecx, al
cmp ecx, 0x16
je 0x4618c7
cmp ecx, 0x21
je 0x461948
mov eax, 0x13
cmp ecx, 0x6f
jne 0x4619d6
mov ebp, esi
mov byte [esp + 0xa3], 0x4a
mov al, 0x1b
mov ecx, dword [esp + 0x94]
lea ecx, [ecx + ecx*8]
mov ecx, dword [ecx*8 + 0x7f61bc]
mov dword [esp + 0x7c], ecx
mov esi, dword [esp + 0x304]
mov dword [esp + 0x78], esi
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x31c]
mov edi, dword [ecx]
mov ecx, dword [ecx + 8]
mov edx, ecx
imul edx, edx
and edx, 3
cmp edx, 2
sbb edx, edx
and edx, 1
jmp 0x461915
mov ebp, esi
mov byte [esp + 0xa3], 0x21
mov al, 0x1b
mov ecx, dword [esp + 0x94]
lea ecx, [ecx + ecx*8]
mov ecx, dword [ecx*8 + 0x7f61bc]
mov dword [esp + 0x7c], ecx
mov esi, dword [esp + 0x304]
mov dword [esp + 0x78], esi
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x31c]
mov edi, dword [ecx]
mov ecx, dword [ecx + 8]
mov edx, ecx
not edx
and edx, 1
add edx, ecx
setne dl
movzx edx, dl
add edi, 0xc
mov dword [esp + 0x80], edi
cmp ecx, edx
mov ecx, dword [esi + 0x18]
mov dword [esp + 0x70], ecx
mov ecx, dword [esi + 0x1c]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x98], ecx
jne 0x460f61
jmp 0x461b90
mov ebp, esi
mov ebx, 0x1e
mov byte [esp + 0xa3], 0x16
mov al, 0x1b
mov ecx, dword [esp + 0x94]
lea ecx, [ecx + ecx*8]
mov ecx, dword [ecx*8 + 0x7f61bc]
mov dword [esp + 0x7c], ecx
mov edx, dword [esp + 0x304]
mov dword [esp + 0x78], edx
mov ecx, dword [edx + 0x10]
mov dword [esp + 0x74], ecx
mov ecx, dword [edx + 0x18]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x31c]
mov esi, dword [ecx]
add esi, 0xc
mov dword [esp + 0x80], esi
cmp dword [ecx + 8], 1
mov ecx, dword [edx + 0x1c]
mov dword [esp + 0x6c], ecx
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x98], ecx
jne 0x460f61
cmp ebx, 0xe
jne 0x461b90
mov eax, ebx
not eax
and eax, 1
add eax, ebx
jne 0x461ade
jmp 0x461b90
mov bl, byte [esp + 0xa2]
cmp eax, 9
je 0x461565
imul eax, eax
and eax, 3
cmp eax, 3
jne 0x460ec8
jmp 0x461565
cmp edi, 0xd
jne 0x461a0e
mov eax, 3
sub eax, edi
xor eax, edi
jne 0x460b82
mov ecx, 3
mov al, byte [esp + 0x93]
movzx eax, al
cmp eax, 0x11
je 0x461ab5
cmp eax, 0x3b
je 0x461695
cmp eax, 0x6e
je 0x461695
mov ebx, 0x11
mov byte [esp + 0x93], 0x3b
mov dword [esp + 0x304], 0
mov dword [esp], esi
call fcn.00435360
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call fcn.004234b0
mov eax, dword [esp + 0x68]
mov dword [esp], eax
call fcn.0041d160
cmp ebx, 0xd
jne 0x4616c0
imul ebx, ebx
and ebx, 3
cmp ebx, 2
jae 0x4616c0
mov dword [esp], 0x20
call fcn.00492770
test eax, eax
je 0x461ad8
mov ebp, esi
mov edx, eax
mov dword [esp + 0x58], edx
mov eax, 8
mov ecx, edx
and ecx, 1
inc ecx
xor ecx, edx
jne 0x461794
jmp 0x461ade
cmp ecx, 3
mov dl, byte [esp + 0x39]
jne 0x4616dc
mov eax, ecx
and eax, 1
xor eax, ecx
not eax
test eax, eax
jne 0x461695
jmp 0x4616dc
mov dword [esp + 0x58], eax
mov ebp, esi
mov dword [esp + 0x2f8], 0x70000003
mov eax, dword [esp + 0xac]
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0xa4], eax
mov esi, ebp
movzx eax, byte [esp + 0xb7]
mov ebp, esi
cmp eax, 0x45
jne 0x46146f
mov edi, 9
mov byte [esp + 0xb7], 0x59
lea eax, [esp + 0x2f8]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x31c]
mov dword [esp], eax
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x15
call fcn.00458d20
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x84], eax
cmp edi, 9
je 0x4614cd
xor eax, eax
test al, al
jne 0x4614cd
mov eax, 0xc
mov esi, dword [esp + 0x80]
movzx ecx, byte [esi]
shl ecx, 0x18
movzx edx, byte [esi + 1]
shl edx, 0x10
or edx, ecx
movzx ecx, byte [esi + 2]
shl ecx, 8
or ecx, edx
movzx edx, byte [esi + 3]
or edx, ecx
mov dword [esp + 0x8c], edx
mov esi, ebp
cmp eax, 0xa
je 0x461bd2
xor eax, eax
test al, al
je 0x461354
mov eax, dword [esi + 0x26c]
mov ecx, dword [esp + 0x304]
mov dword [ecx], eax
mov eax, dword [esi + 0x1b8]
mov ecx, dword [esi + 0x1bc]
lea edx, [esi + 0x274]
mov ebp, esi
mov esi, dword [esp + 0x304]
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov eax, dword [esp + 0x31c]
mov dword [esp], eax
mov dword [esp + 0x18], 1
mov dword [esp + 0x14], 0x13
call fcn.00459370
mov dword [esp + 0x88], 0
mov dword [esp + 0x84], 0
jmp 0x4614cd