// File: eschwabe[P]interview-practice/src/convert.cpp
// Function: main
int main()
{
    cout << StringToInt("-100") << endl;
    cout << StringToInt("101") << endl;
    cout << StringToInt("3") << endl;
    cout << StringToInt("32340357") << endl;
    cout << StringToInt("0") << endl;
    cout << StringToInt("-1") << endl;

    cout << IntToString(100) << endl;
    cout << IntToString(-101) << endl;
    cout << IntToString(1287234) << endl;
    cout << IntToString(-19467) << endl;
    cout << IntToString(0) << endl;
    cout << IntToString(-1) << endl;
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2c0, %rsp            # imm = 0x2C0
movl $0x0, -0x4(%rbp)
leaq -0x29(%rbp), %rdi
movq %rdi, -0x200(%rbp)
callq 0x21c0
movq -0x200(%rbp), %rdx
leaq 0xac4(%rip), %rsi       # 0x3004
leaq -0x28(%rbp), %rdi
callq 0x2c40
jmp 0x254b
leaq -0x28(%rbp), %rdi
callq 0x2340
movl %eax, %esi
movq 0x2a7b(%rip), %rdi      # 0x4fd8
callq 0x21a0
movq %rax, -0x208(%rbp)
jmp 0x256b
movq -0x208(%rbp), %rdi
movq 0x2a4f(%rip), %rsi      # 0x4fc8
callq 0x20f0
jmp 0x2580
leaq -0x28(%rbp), %rdi
callq 0x2070
leaq -0x29(%rbp), %rdi
callq 0x2110
leaq -0x61(%rbp), %rdi
movq %rdi, -0x210(%rbp)
callq 0x21c0
movq -0x210(%rbp), %rdx
leaq 0xa59(%rip), %rsi       # 0x3009
leaq -0x60(%rbp), %rdi
callq 0x2c40
jmp 0x25bb
leaq -0x60(%rbp), %rdi
callq 0x2340
movl %eax, %esi
movq 0x2a0b(%rip), %rdi      # 0x4fd8
callq 0x21a0
movq %rax, -0x218(%rbp)
jmp 0x25db
movq -0x218(%rbp), %rdi
movq 0x29df(%rip), %rsi      # 0x4fc8
callq 0x20f0
jmp 0x25f0
leaq -0x60(%rbp), %rdi
callq 0x2070
leaq -0x61(%rbp), %rdi
callq 0x2110
leaq -0x89(%rbp), %rdi
movq %rdi, -0x220(%rbp)
callq 0x21c0
movq -0x220(%rbp), %rdx
leaq 0x9ea(%rip), %rsi       # 0x300d
leaq -0x88(%rbp), %rdi
callq 0x2c40
jmp 0x2631
leaq -0x88(%rbp), %rdi
callq 0x2340
movl %eax, %esi
movq 0x2992(%rip), %rdi      # 0x4fd8
callq 0x21a0
movq %rax, -0x228(%rbp)
jmp 0x2654
movq -0x228(%rbp), %rdi
movq 0x2966(%rip), %rsi      # 0x4fc8
callq 0x20f0
jmp 0x2669
leaq -0x88(%rbp), %rdi
callq 0x2070
leaq -0x89(%rbp), %rdi
callq 0x2110
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x230(%rbp)
callq 0x21c0
movq -0x230(%rbp), %rdx
leaq 0x96d(%rip), %rsi       # 0x300f
leaq -0xb0(%rbp), %rdi
callq 0x2c40
jmp 0x26b0
leaq -0xb0(%rbp), %rdi
callq 0x2340
movl %eax, %esi
movq 0x2913(%rip), %rdi      # 0x4fd8
callq 0x21a0
movq %rax, -0x238(%rbp)
jmp 0x26d3
movq -0x238(%rbp), %rdi
movq 0x28e7(%rip), %rsi      # 0x4fc8
callq 0x20f0
jmp 0x26e8
leaq -0xb0(%rbp), %rdi
callq 0x2070
leaq -0xb1(%rbp), %rdi
callq 0x2110
leaq -0xd9(%rbp), %rdi
movq %rdi, -0x240(%rbp)
callq 0x21c0
movq -0x240(%rbp), %rdx
leaq 0x8e6(%rip), %rsi       # 0x3007
leaq -0xd8(%rbp), %rdi
callq 0x2c40
jmp 0x272f
leaq -0xd8(%rbp), %rdi
callq 0x2340
movl %eax, %esi
movq 0x2894(%rip), %rdi      # 0x4fd8
callq 0x21a0
movq %rax, -0x248(%rbp)
jmp 0x2752
movq -0x248(%rbp), %rdi
movq 0x2868(%rip), %rsi      # 0x4fc8
callq 0x20f0
jmp 0x2767
leaq -0xd8(%rbp), %rdi
callq 0x2070
leaq -0xd9(%rbp), %rdi
callq 0x2110
leaq -0x101(%rbp), %rdi
movq %rdi, -0x250(%rbp)
callq 0x21c0
movq -0x250(%rbp), %rdx
leaq 0x878(%rip), %rsi       # 0x3018
leaq -0x100(%rbp), %rdi
callq 0x2c40
jmp 0x27ae
leaq -0x100(%rbp), %rdi
callq 0x2340
movl %eax, %esi
movq 0x2815(%rip), %rdi      # 0x4fd8
callq 0x21a0
movq %rax, -0x258(%rbp)
jmp 0x27d1
movq -0x258(%rbp), %rdi
movq 0x27e9(%rip), %rsi      # 0x4fc8
callq 0x20f0
jmp 0x27e6
leaq -0x100(%rbp), %rdi
callq 0x2070
leaq -0x101(%rbp), %rdi
callq 0x2110
movl $0x64, -0x12c(%rbp)
leaq -0x128(%rbp), %rdi
movq %rdi, -0x268(%rbp)
leaq -0x12c(%rbp), %rsi
callq 0x23f0
movq -0x268(%rbp), %rsi
movq 0x27a8(%rip), %rdi      # 0x4fd8
callq 0x20e0
movq %rax, -0x260(%rbp)
jmp 0x283e
movq -0x260(%rbp), %rdi
movq 0x277c(%rip), %rsi      # 0x4fc8
callq 0x20f0
jmp 0x2853
leaq -0x128(%rbp), %rdi
callq 0x2070
movl $0xffffff9b, -0x154(%rbp) # imm = 0xFFFFFF9B
leaq -0x150(%rbp), %rdi
movq %rdi, -0x278(%rbp)
leaq -0x154(%rbp), %rsi
callq 0x23f0
movq -0x278(%rbp), %rsi
movq 0x2747(%rip), %rdi      # 0x4fd8
callq 0x20e0
movq %rax, -0x270(%rbp)
jmp 0x289f
movq -0x270(%rbp), %rdi
movq 0x271b(%rip), %rsi      # 0x4fc8
callq 0x20f0
jmp 0x28b4
leaq -0x150(%rbp), %rdi
callq 0x2070
movl $0x13a442, -0x17c(%rbp) # imm = 0x13A442
leaq -0x178(%rbp), %rdi
movq %rdi, -0x288(%rbp)
leaq -0x17c(%rbp), %rsi
callq 0x23f0
movq -0x288(%rbp), %rsi
movq 0x26e6(%rip), %rdi      # 0x4fd8
callq 0x20e0
movq %rax, -0x280(%rbp)
jmp 0x2900
movq -0x280(%rbp), %rdi
movq 0x26ba(%rip), %rsi      # 0x4fc8
callq 0x20f0
jmp 0x2915
leaq -0x178(%rbp), %rdi
callq 0x2070
movl $0xffffb3f5, -0x1a4(%rbp) # imm = 0xFFFFB3F5
leaq -0x1a0(%rbp), %rdi
movq %rdi, -0x298(%rbp)
leaq -0x1a4(%rbp), %rsi
callq 0x23f0
movq -0x298(%rbp), %rsi
movq 0x2685(%rip), %rdi      # 0x4fd8
callq 0x20e0
movq %rax, -0x290(%rbp)
jmp 0x2961
movq -0x290(%rbp), %rdi
movq 0x2659(%rip), %rsi      # 0x4fc8
callq 0x20f0
jmp 0x2976
leaq -0x1a0(%rbp), %rdi
callq 0x2070
movl $0x0, -0x1cc(%rbp)
leaq -0x1c8(%rbp), %rdi
movq %rdi, -0x2a8(%rbp)
leaq -0x1cc(%rbp), %rsi
callq 0x23f0
movq -0x2a8(%rbp), %rsi
movq 0x2624(%rip), %rdi      # 0x4fd8
callq 0x20e0
movq %rax, -0x2a0(%rbp)
jmp 0x29c2
movq -0x2a0(%rbp), %rdi
movq 0x25f8(%rip), %rsi      # 0x4fc8
callq 0x20f0
jmp 0x29d7
leaq -0x1c8(%rbp), %rdi
callq 0x2070
movl $0xffffffff, -0x1f4(%rbp) # imm = 0xFFFFFFFF
leaq -0x1f0(%rbp), %rdi
movq %rdi, -0x2b8(%rbp)
leaq -0x1f4(%rbp), %rsi
callq 0x23f0
movq -0x2b8(%rbp), %rsi
movq 0x25c3(%rip), %rdi      # 0x4fd8
callq 0x20e0
movq %rax, -0x2b0(%rbp)
jmp 0x2a23
movq -0x2b0(%rbp), %rdi
movq 0x2597(%rip), %rsi      # 0x4fc8
callq 0x20f0
jmp 0x2a38
leaq -0x1f0(%rbp), %rdi
callq 0x2070
xorl %eax, %eax
addq $0x2c0, %rsp            # imm = 0x2C0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2a72
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x2070
leaq -0x29(%rbp), %rdi
callq 0x2110
jmp 0x2c2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2aa3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x2070
leaq -0x61(%rbp), %rdi
callq 0x2110
jmp 0x2c2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2ad7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x88(%rbp), %rdi
callq 0x2070
leaq -0x89(%rbp), %rdi
callq 0x2110
jmp 0x2c2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2b0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x2070
leaq -0xb1(%rbp), %rdi
callq 0x2110
jmp 0x2c2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2b45
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x2070
leaq -0xd9(%rbp), %rdi
callq 0x2110
jmp 0x2c2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
jmp 0x2b7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x100(%rbp), %rdi
callq 0x2070
leaq -0x101(%rbp), %rdi
callq 0x2110
jmp 0x2c2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x128(%rbp), %rdi
callq 0x2070
jmp 0x2c2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x150(%rbp), %rdi
callq 0x2070
jmp 0x2c2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x178(%rbp), %rdi
callq 0x2070
jmp 0x2c2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1a0(%rbp), %rdi
callq 0x2070
jmp 0x2c2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1c8(%rbp), %rdi
callq 0x2070
jmp 0x2c2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x38(%rbp)
movl %eax, -0x3c(%rbp)
leaq -0x1f0(%rbp), %rdi
callq 0x2070
movq -0x38(%rbp), %rdi
callq 0x21b0
nopw %cs:(%rax,%rax)
nopl (%rax)