Function at 0x4a8800
Capabilities:
Encrypt data using speck

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xac
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x58], eax
mov dword [esp], eax
call fcn.004968c0
mov dword [esp], eax
call fcn.004f9450
mov edx, dword [esp + 0xc4]
mov dword [esp + 0x48], edx
mov dword [esp], edx
mov esi, eax
call fcn.004968c0
mov dword [esp], eax
call fcn.004f9450
mov ecx, dword [esi + 0x14]
mov edi, eax
mov eax, dword [ecx]
and eax, 0x100ff
cmp eax, 0x10002
mov eax, dword [edi + 0x14]
sete byte [esp + 0x5f]
movzx ebx, byte [esp + 0x5f]
mov edx, dword [eax]
and edx, 0x100ff
cmp edx, 0x10002
sete dl
movzx ebp, dl
or ebp, ebx
je 0x4a88e0
test dl, dl
jne 0x4a8a74
test ebx, ebx
mov edx, esi
cmove eax, ecx
cmovne edx, edi
movzx eax, byte [eax]
lea ebp, [esp + ebx*4 + 0xc0]
cmp al, 0x18
jne 0x4a8a06
test ebx, ebx
cmove esi, edi
mov dword [esp + 4], esi
mov eax, dword [ebp]
mov dword [esp], eax
call fcn.004a8680
mov ecx, dword [esp + 0xc8]
mov dword [ebp], eax
mov edx, dword [esp + 0xc4]
mov eax, dword [esp + 0xc0]
call 0x4a95c0
mov esi, eax
add esp, 0xac
mov eax, esi
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call fcn.00499630
mov edx, dword [esp + 0x48]
mov dword [esp], edx
mov ebp, eax
call fcn.00499630
mov dword [esp], ebp
mov esi, eax
call fcn.004968c0
mov dword [esp], eax
call fcn.004f9450
mov dword [esp], esi
mov dword [esp + 0x58], eax
call fcn.004968c0
mov dword [esp], eax
call fcn.004f9450
mov ecx, dword [esp + 0x58]
mov ebx, eax
mov eax, dword [ecx + 0x14]
movzx eax, byte [eax]
cmp al, 0x18
jne 0x4a8a50
mov ecx, dword [ebx + 0x14]
movzx eax, byte [ecx]
cmp al, 0x18
jne 0x4a8a30
mov edx, dword [esp + 0x58]
mov edi, dword [edx + 0x14]
movzx edx, byte [edi]
cmp dl, 0x18
je 0x4a8aa2
cmp al, 0x18
je 0x4a8be1
cmp dl, 9
je 0x4a8bf0
cmp al, 9
je 0x4a8bf0
cmp dl, 0x14
je 0x4a8b23
cmp al, 0x14
je 0x4a8b23
mov eax, dword [esp + 0xc8]
sub eax, 7
cmp eax, 1
jbe 0x4a8c30
cmp dword [esp + 0xc8], 0x18
je 0x4a8c30
mov eax, dword [esp + 0x58]
mov edx, dword [ebx + 0x10]
cmp dword [eax + 0x10], edx
ja 0x4a8c30
jb 0x4a8c24
test byte [edi + 1], 1
jne 0x4a89d0
test byte [ecx + 1], 1
je 0x4a8c3a
mov dword [esp + 0x58], ebx
lea esi, [esi]
mov dword [esp], esi
call fcn.004997d0
mov dword [esp], ebp
mov esi, eax
mov edi, edx
call fcn.004997d0
cmp dword [esp + 0xc8], 0x1e
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jbe 0x4a9184
mov dword [esp], str.Invalid_binary_operation_on_numbers.
call fcn.0059a2d0
cmp al, 9
je 0x4a889c
mov dword [esp], edx
call fcn.004faa50
test eax, eax
jne 0x4a889c
mov dword [esp], 0x6ebee0
call fcn.0059a2d0
lea esi, [esi]
cmp al, 9
je 0x4a8942
mov dword [esp], ebx
call fcn.004faa50
test eax, eax
je 0x4a8a68
mov ecx, dword [ebx + 0x14]
movzx eax, byte [ecx]
jmp 0x4a8942
cmp al, 9
je 0x4a8934
mov dword [esp], ecx
call fcn.004faa50
test eax, eax
jne 0x4a8934
mov dword [esp], str.Argument_to_arithmetic_operation_not_a_number_or_boolean.
call fcn.0059a2d0
cmp byte [esp + 0x5f], 0
je 0x4a8880
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x58]
call 0x4a95c0
add esp, 0xac
pop ebx
mov esi, eax
mov eax, esi
pop esi
pop edi
pop ebp
ret
cmp al, 0x18
je 0x4a94fd
mov eax, dword [esp + 0x58]
mov ebx, dword [esp + 0x58]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x48], eax
mov dword [esp], ebx
lea edi, [esp + 0x70]
call fcn.004f8810
mov dword [esp], eax
call fcn.004ecca0
lea ecx, [esp + 0x60]
mov edx, esi
mov dword [esp + 8], edi
mov dword [esp + 0x58], eax
lea eax, [esp + 0x9c]
mov dword [esp + 0x10], eax
lea eax, [esp + 0x94]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x98]
mov dword [esp + 4], eax
lea eax, [esp + 0x90]
mov dword [esp], eax
mov eax, ebp
call fcn.004a7040
cmp dword [esp + 0xc8], 0x18
jbe 0x4a8b56
mov dword [esp], str.Operation_not_valid_for_decimal_floating_point_number.
call fcn.0059a2d0
mov dword [esp], ebp
call fcn.004997d0
mov dword [esp], esi
mov ebx, eax
mov edi, edx
call fcn.004997d0
mov ecx, dword [esp + 0xc8]
sub ecx, 0xb
cmp ecx, 4
jbe switch.0x004a90f5
mov dword [esp], str.Invalid_operation_on_booleans.
call fcn.0059a2d0
movzx ecx, byte [esp + 0xc8]
mov eax, 1
shl eax, cl
test eax, 0x100001e
je 0x4a8b17
mov eax, dword [esp + 0x58]
lea ecx, [esp + 0x60]
mov edx, dword [esp + 0x48]
lea esi, [esp + 0x80]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x20], edx
mov dword [esp], ecx
mov dword [esp + 0x10], edi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 8], eax
call fcn.004926d0
mov dword [esp + 4], esi
mov dword [esp], ebx
call fcn.00499440
mov esi, eax
jmp 0x4a88cf
mov ecx, dword [ebx + 0x10]
mov dword [esp + 0x48], ecx
jmp 0x4a8ab9
mov dword [esp], ebp
call fcn.00498310
mov dword [esp], esi
fstp qword [esp + 0x48]
call fcn.00498310
cmp dword [esp + 0xc8], 0x1a
jbe 0x4a8ff0
fstp st(0)
jmp 0x4a8c18
fstp st(0)
mov dword [esp], str.Integer_only_operation_on_floating_point_number.
call fcn.0059a2d0
mov edi, ecx
mov dword [esp + 0x58], ebx
lea esi, [esi]
test byte [edi + 1], 1
jne 0x4a89d0
mov dword [esp], ebp
call fcn.004997d0
mov dword [esp], esi
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
call fcn.004997d0
cmp dword [esp + 0xc8], 0x1e
mov esi, eax
mov edi, edx
ja case.0x4a918b.0
mov ecx, dword [esp + 0xc8]
jmp dword [ecx*4 + 0x6ebf10]
or edx, esi
je 0x4a8cc0
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov dword [esp + 8], esi
mov dword [esp + 0xc], edi
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0069df70
test edx, edx
mov ecx, eax
mov ebx, edx
js 0x4a957a
mov edx, edi
mov eax, ebx
imul eax, esi
imul edx, ecx
lea ebx, [edx + eax]
mov eax, esi
mul ecx
mov edi, edx
mov esi, eax
add edi, ebx
sub dword [esp + 0x48], esi
sbb dword [esp + 0x4c], edi
lea esi, [esi]
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call fcn.004967e0
mov esi, eax
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call fcn.004f8810
mov dword [esp], eax
call fcn.004ecca0
mov dword [esp], esi
mov ebx, eax
call fcn.004968c0
mov edi, dword [eax + 0x10]
mov dword [esp], esi
call fcn.00496960
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ecx
mov dword [esp], eax
call fcn.0048a470
jmp 0x4a88cf
add dword [esp + 0x48], eax
adc dword [esp + 0x4c], edx
jmp 0x4a8cc0
cmp dword [esp + 0x4c], edx
jg 0x4a8cc0
jl 0x4a8d34
cmp dword [esp + 0x48], eax
jae 0x4a8cc0
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], edi
jmp 0x4a8cc0
cmp dword [esp + 0x4c], edx
jl 0x4a8cc0
jg 0x4a8d34
cmp dword [esp + 0x48], eax
nop
jbe 0x4a8cc0
jmp 0x4a8d34
test edx, edx
mov dword [esp + 0x50], 1
mov dword [esp + 0x54], 0
jns 0x4a8d8d
jmp 0x4a9558
mov eax, dword [esp + 0x4c]
imul eax, dword [esp + 0x48]
lea ecx, [eax + eax]
mov eax, dword [esp + 0x48]
mul eax
add edx, ecx
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
mov eax, esi
and eax, 1
test eax, eax
je 0x4a8dbd
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x4c]
imul eax, dword [esp + 0x50]
imul edx, dword [esp + 0x48]
lea ecx, [edx + eax]
mov eax, dword [esp + 0x50]
mul dword [esp + 0x48]
add edx, ecx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], edx
shrd esi, edi, 1
sar edi, 1
mov edx, edi
or edx, esi
jne 0x4a8d71
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a8cc0
xor edx, edx
mov eax, 1
cmp dword [esp + 0x4c], edi
jg 0x4a8dd1
jl 0x4a8df3
cmp dword [esp + 0x48], esi
jae 0x4a8dd1
xor eax, eax
xor edx, edx
jmp 0x4a8dd1
xor edx, edx
mov eax, 1
cmp dword [esp + 0x4c], edi
jl 0x4a8dd1
jg 0x4a8df3
cmp dword [esp + 0x48], esi
jbe 0x4a8dd1
nop
jmp 0x4a8df3
xor edx, edx
mov eax, 1
cmp dword [esp + 0x4c], edi
jg 0x4a8dd1
jl 0x4a8df3
cmp dword [esp + 0x48], esi
ja 0x4a8dd1
jmp 0x4a8df3
xor edx, edx
mov eax, 1
cmp dword [esp + 0x4c], edi
jl 0x4a8dd1
jg 0x4a8df3
cmp dword [esp + 0x48], esi
jb 0x4a8dd1
nop
jmp 0x4a8df3
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
xor edx, esi
xor eax, edi
or edx, eax
setne al
movzx eax, al
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], 0
jmp 0x4a8cc0
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x4c], 0
xor edx, esi
xor eax, edi
or edx, eax
sete al
movzx eax, al
mov dword [esp + 0x48], eax
jmp 0x4a8cc0
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
xor eax, esi
xor edx, edi
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a8cc0
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
or eax, esi
or edx, edi
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a8cc0
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
and eax, esi
and edx, edi
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a8cc0
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
or edx, esi
or eax, edi
jmp 0x4a8e4e
mov edx, eax
mov ecx, dword [esp + 0x48]
or edx, edi
setne al
or ecx, dword [esp + 0x4c]
movzx eax, al
setne dl
movzx edx, dl
and eax, edx
mov edx, eax
sar edx, 0x1f
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a8cc0
mov edx, dword [esp + 0x4c]
mov ecx, esi
mov eax, dword [esp + 0x48]
shrd eax, edx, cl
sar edx, cl
mov ebx, edx
sar ebx, 0x1f
test cl, 0x20
cmovne eax, edx
cmovne edx, ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a8cc0
mov eax, dword [esp + 0x48]
mov ecx, esi
xor esi, esi
mov edx, dword [esp + 0x4c]
shld edx, eax, cl
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, esi
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a8cc0
or edx, esi
je 0x4a95b1
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov dword [esp + 8], esi
mov dword [esp + 0xc], edi
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0069e1c0
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a8cc0
or edx, esi
je 0x4a95b1
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov dword [esp + 8], esi
mov dword [esp + 0xc], edi
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0069df70
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a8cc0
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
imul eax, esi
imul ecx, edx
add ecx, eax
mov eax, dword [esp + 0x48]
mul esi
add edx, ecx
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a8cc0
mov ecx, dword [esp + 0xc8]
jmp dword [ecx*4 + 0x6ebf8c]
fld qword [esp + 0x48]
fucomi st(1)
fcmovbe st(0), st(1)
fstp st(1)
mov edx, dword [esp + 0x58]
mov eax, dword [edx + 0x14]
cmp byte [eax], 9
je 0x4a90e0
fstp qword [esp + 0x30]
mov dword [esp], ebx
call fcn.004967e0
mov esi, eax
mov dword [esp], eax
call fcn.004968c0
mov dword [esp], esi
mov ebx, eax
call fcn.00496960
mov dword [esp + 4], ebx
fld qword [esp + 0x30]
fstp qword [esp + 8]
mov dword [esp], eax
call fcn.005a49b0
jmp 0x4a88cf
fld qword [esp + 0x48]
fxch st(1)
fucomi st(1)
fcmovnbe st(0), st(1)
fstp st(1)
jmp 0x4a9008
mov esi, dword [sym.imp.msvcrt.dll__errno]
fstp qword [esp + 0x30]
call esi
fld qword [esp + 0x30]
mov dword [eax], 0
fstp qword [esp + 8]
fld qword [esp + 0x48]
fstp qword [esp]
call fcn.0069e7b0
fstp qword [esp + 0x30]
call esi
mov eax, dword [eax]
fld qword [esp + 0x30]
test eax, eax
je 0x4a9008
fstp st(0)
call esi
mov eax, dword [eax]
mov dword [esp], eax
call fcn.00456120
mov dword [esp], str.Cannot_perform_exponentiation:__s
mov dword [esp + 4], eax
call fcn.0059a2d0
fdivr qword [esp + 0x48]
jmp 0x4a9008
fmul qword [esp + 0x48]
jmp 0x4a9008
fsubr qword [esp + 0x48]
jmp 0x4a9008
fadd qword [esp + 0x48]
jmp 0x4a9008
mov eax, dword [ebx + 0x14]
cmp byte [eax], 9
je 0x4a951e
mov ebx, dword [esp + 0x58]
jmp 0x4a9018
jmp dword [ecx*4 + 0x6ebff8]
xor eax, ebx
xor edi, edx
or eax, edi
sete bl
xor edi, edi
movzx ebx, bl
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call fcn.004967e0
mov esi, eax
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call fcn.004f8810
mov dword [esp], eax
call fcn.004ecca0
mov ebp, eax
mov eax, dword [esp + 0x58]
mov edx, dword [eax + 0x10]
mov dword [esp], esi
mov dword [esp + 0x44], edx
call fcn.00496960
mov edx, dword [esp + 0x44]
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], edi
mov dword [esp + 8], ebp
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0048a470
jmp 0x4a88cf
xor ebx, eax
xor edi, edx
jmp 0x4a910a
or ebx, eax
or edi, edx
jmp 0x4a910a
and ebx, eax
and edi, edx
jmp 0x4a910a
xor eax, ebx
xor edi, edx
or eax, edi
setne bl
xor edi, edi
movzx ebx, bl
jmp 0x4a910a
mov ecx, dword [esp + 0xc8]
jmp dword [ecx*4 + 0x6ec00c]
mov edx, edi
or edx, esi
je 0x4a91d3
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov dword [esp + 8], esi
mov dword [esp + 0xc], edi
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0069e0c0
mov ecx, eax
mov eax, ecx
imul edx, esi
imul eax, edi
lea ebx, [edx + eax]
mov eax, ecx
mul esi
mov edi, edx
mov esi, eax
add edi, ebx
sub dword [esp + 0x48], esi
sbb dword [esp + 0x4c], edi
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call fcn.004967e0
mov esi, eax
mov eax, dword [esp + 0x58]
mov dword [esp], eax
call fcn.004f8810
mov dword [esp], eax
call fcn.004ecca0
mov dword [esp], esi
mov ebx, eax
call fcn.004968c0
mov edi, dword [eax + 0x10]
mov dword [esp], esi
call fcn.00496960
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ecx
mov dword [esp], eax
call fcn.0048a4d0
jmp 0x4a88cf
add dword [esp + 0x48], esi
adc dword [esp + 0x4c], edi
jmp 0x4a91d3
cmp dword [esp + 0x4c], edi
ja 0x4a91d3
jb 0x4a9247
cmp dword [esp + 0x48], esi
jae 0x4a91d3
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], edi
jmp 0x4a91d3
cmp dword [esp + 0x4c], edi
jb 0x4a91d3
ja 0x4a9247
cmp dword [esp + 0x48], esi
jbe 0x4a91d3
jmp 0x4a9247
test edi, edi
mov dword [esp + 0x50], 1
mov dword [esp + 0x54], 0
jns 0x4a929e
jmp 0x4a952c
mov eax, dword [esp + 0x4c]
imul eax, dword [esp + 0x48]
lea ecx, [eax + eax]
mov eax, dword [esp + 0x48]
mul eax
add edx, ecx
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
mov eax, esi
and eax, 1
test eax, eax
je 0x4a92ce
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x4c]
imul eax, dword [esp + 0x50]
imul edx, dword [esp + 0x48]
lea ecx, [edx + eax]
mov eax, dword [esp + 0x50]
mul dword [esp + 0x48]
add edx, ecx
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], edx
shrd esi, edi, 1
sar edi, 1
mov edx, edi
or edx, esi
jne 0x4a9282
mov eax, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a91d3
xor edx, edx
mov eax, 1
cmp dword [esp + 0x4c], edi
ja 0x4a92e2
jb 0x4a9304
cmp dword [esp + 0x48], esi
jae 0x4a92e2
xor eax, eax
xor edx, edx
jmp 0x4a92e2
xor edx, edx
mov eax, 1
cmp dword [esp + 0x4c], edi
jb 0x4a92e2
ja 0x4a9304
cmp dword [esp + 0x48], esi
jbe 0x4a92e2
nop
jmp 0x4a9304
xor edx, edx
mov eax, 1
cmp dword [esp + 0x4c], edi
ja 0x4a92e2
jb 0x4a9304
cmp dword [esp + 0x48], esi
ja 0x4a92e2
jmp 0x4a9304
xor edx, edx
mov eax, 1
cmp dword [esp + 0x4c], edi
jb 0x4a92e2
ja 0x4a9304
cmp dword [esp + 0x48], esi
jb 0x4a92e2
nop
jmp 0x4a9304
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
xor edx, esi
xor eax, edi
or edx, eax
setne al
movzx eax, al
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], 0
jmp 0x4a91d3
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x4c], 0
xor edx, esi
xor eax, edi
or edx, eax
sete al
movzx eax, al
mov dword [esp + 0x48], eax
jmp 0x4a91d3
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
xor eax, esi
xor edx, edi
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a91d3
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
or eax, esi
or edx, edi
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a91d3
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
and eax, esi
and edx, edi
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a91d3
mov edx, dword [esp + 0x48]
mov eax, dword [esp + 0x4c]
or edx, esi
or eax, edi
jmp 0x4a935e
mov edx, esi
mov ecx, dword [esp + 0x48]
or edx, edi
setne al
or ecx, dword [esp + 0x4c]
movzx eax, al
setne dl
movzx edx, dl
and eax, edx
mov edx, eax
sar edx, 0x1f
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a91d3
mov edx, dword [esp + 0x4c]
mov ecx, esi
xor ebx, ebx
mov eax, dword [esp + 0x48]
shrd eax, edx, cl
shr edx, cl
test cl, 0x20
cmovne eax, edx
cmovne edx, ebx
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a91d3
mov eax, dword [esp + 0x48]
mov ecx, esi
xor esi, esi
mov edx, dword [esp + 0x4c]
shld edx, eax, cl
shl eax, cl
test cl, 0x20
cmovne edx, eax
cmovne eax, esi
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a91d3
mov edx, edi
or edx, esi
je 0x4a95b1
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov dword [esp + 8], esi
mov dword [esp + 0xc], edi
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0069e360
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a91d3
mov edx, edi
or edx, esi
je 0x4a95b1
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov dword [esp + 8], esi
mov dword [esp + 0xc], edi
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.0069e0c0
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a91d3
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
imul eax, esi
imul ecx, edi
add ecx, eax
mov eax, dword [esp + 0x48]
mul esi
add edx, ecx
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], edx
jmp 0x4a91d3
mov ecx, dword [esp + 0x58]
mov edx, dword [ebx + 0x10]
mov eax, dword [ecx + 0x10]
mov dword [esp + 0x48], edx
cmp edx, eax
ja 0x4a8ab9
mov dword [esp + 0x48], eax
mov ebx, ecx
jmp 0x4a8ab9
mov ecx, dword [edx + 0x10]
cmp dword [ebx + 0x10], ecx
cmovbe ebx, edx
jmp 0x4a9018
mov eax, dword [esp + 0x4c]
or eax, dword [esp + 0x48]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
test eax, eax
jne 0x4a91d3
mov dword [esp], str.Attempt_to_raise_0_to_negative_power.
call fcn.0059a2d0
mov eax, dword [esp + 0x4c]
or eax, dword [esp + 0x48]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
test eax, eax
jne 0x4a8cc0
jmp 0x4a954c
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov dword [esp + 8], esi
mov dword [esp + 0xc], edi
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 0x44], ecx
call fcn.0069e1c0
mov ecx, dword [esp + 0x44]
or edx, eax
je 0x4a8c9e
add ecx, 0xffffffff
adc ebx, 0xffffffff
jmp 0x4a8c9e
mov dword [esp], 0x6ebe7f
call fcn.0059a2d0
lea esi, [esi]
push ebp
push edi
push esi
push ebx
sub esp, 0x5c
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
mov dword [esp], eax
call fcn.004968c0
mov dword [esp], eax
call fcn.004f9450
mov edx, dword [esp + 0x24]
mov dword [esp], edx
mov ebx, eax
call fcn.004968c0
mov dword [esp], eax
call fcn.004f9450
mov ebp, eax
mov eax, dword [eax + 0x14]
mov eax, dword [eax]
and eax, 0x100ff
cmp eax, 0x10002
jne 0x4a9804
mov eax, dword [ebx + 0x14]
mov eax, dword [eax]
and eax, 0x100ff
cmp eax, 0x10002
jne 0x4a9804
lea eax, [esp + 0x38]
mov dword [esp + 8], eax
lea eax, [esp + 0x30]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.004f9f30
test eax, eax
je 0x4a97f8
lea eax, [esp + 0x48]
mov dword [esp + 8], eax
lea eax, [esp + 0x40]
mov dword [esp + 4], eax
mov dword [esp], ebp
call fcn.004f9f30
test eax, eax
je 0x4a97f8
mov eax, dword [ebx + 0x14]
mov eax, dword [eax + 0x14]
mov dword [esp], eax
call fcn.004f9450
mov esi, eax
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0x14]
mov dword [esp], eax
call fcn.004f9450
mov edx, dword [esi + 0x10]
mov esi, dword [esi + 0x14]
mov dword [esp + 0x18], edx
mov ecx, dword [eax + 0x14]
movzx edx, byte [ecx]
cmp byte [esi], dl
jne 0x4a97ec
mov edx, dword [esp + 0x18]
cmp edx, dword [eax + 0x10]
jne 0x4a97ec
movzx eax, byte [ecx + 1]
xor al, byte [esi + 1]
test al, 1
jne 0x4a97ec
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x34]
xor edx, dword [esp + 0x44]
xor eax, dword [esp + 0x40]
or edx, eax
jne 0x4a97ec
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
xor edx, dword [esp + 0x4c]
xor eax, dword [esp + 0x48]
or edx, eax
jne 0x4a97ec
mov dword [esp], ebx
call fcn.004967e0
mov dword [esp + 0x1c], eax
call fcn.00497120
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x38]
sub eax, dword [esp + 0x30]
sbb edx, dword [esp + 0x34]
test edx, edx
js 0x4a97ca
xor ebp, ebp
xor esi, esi
mov dword [esp + 0x10], 1
xor edi, edi
mov dword [esp + 0x14], 0
lea esi, [esi]
mov edx, dword [esp + 0x24]
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov dword [esp], edx
call fcn.004a7750
mov dword [esp + 4], esi
mov dword [esp + 8], edi
mov ebx, eax
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call fcn.004a7750
mov edx, dword [esp + 0x28]
mov dword [esp + 4], ebx
mov dword [esp + 8], edx
mov dword [esp], eax
call fcn.004a8800
mov dword [esp], eax
call fcn.00496ad0
mov ebx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp], eax
call fcn.00496d70
mov edx, dword [esp + 0x18]
mov dword [esp + 4], ebx
mov dword [esp + 8], edx
add eax, ebp
mov dword [esp], eax
call sub.msvcrt.dll_memcpy
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x38]
add dword [esp + 0x10], 1
mov edx, dword [esp + 0x3c]
adc dword [esp + 0x14], 0
add ebp, dword [esp + 0x18]
sub eax, dword [esp + 0x30]
sbb edx, dword [esp + 0x34]
cmp edx, edi
jg 0x4a9730
jge 0x4a97e2
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call fcn.004971f0
mov eax, dword [esp + 0x1c]
add esp, 0x5c
pop ebx
pop esi
pop edi
pop ebp
ret
cmp eax, esi
jae 0x4a9730
jmp 0x4a97ca
mov dword [esp], 0x6ec0bc
call fcn.0059a2d0
mov dword [esp], 0x6ebd38
call fcn.0059a2d0
mov dword [esp], str.Vector_operations_are_only_supported_among_vectors
call fcn.0059a2d0