_Converte(libSaida, libEntrada, libTamanho) char *libSaida;
char *libEntrada;
int libTamanho;
{
  char *libSalva;
  libSalva = libSaida;
  if (!libTamanho) {
    *libSaida = '0' + ((*libEntrada >> 4) & 0x0F);
    if (*libSaida > '9')
      *libSaida += 7;
    libSaida++;
    *libSaida = '0' + (*libEntrada & 0x0F);
    if (*libSaida > '9')
      *libSaida += 7;
    libSaida++;
  } else
    for (; libTamanho--; libEntrada++) {
      *libSaida++ = ((*libEntrada >> 4) & 0x0F) + '0';
      *libSaida++ = (*libEntrada & 0x0F) + '0';
    }
  *libSaida = 0;
  _Trace("    _Converte ( %s )\n", libSalva);
}


x86 assembly (clang, -O0):
<_Converte>:
push   %rbp
mov    %rsp,%rbp
sub    $0x30,%rsp
mov    %rdi,-0x10(%rbp)
mov    %rsi,-0x18(%rbp)
mov    %edx,-0x1c(%rbp)
mov    -0x10(%rbp),%rax
mov    %rax,-0x28(%rbp)
cmpl   $0x0,-0x1c(%rbp)
jne    11b7 <_Converte+0xa7>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
sar    $0x4,%eax
and    $0xf,%eax
add    $0x30,%eax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %cl,(%rax)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jle    1169 <_Converte+0x59>
mov    -0x10(%rbp),%rax
movsbl (%rax),%ecx
add    $0x7,%ecx
mov    %cl,(%rax)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
and    $0xf,%eax
add    $0x30,%eax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %cl,(%rax)
mov    -0x10(%rbp),%rax
movsbl (%rax),%eax
cmp    $0x39,%eax
jle    11a6 <_Converte+0x96>
mov    -0x10(%rbp),%rax
movsbl (%rax),%ecx
add    $0x7,%ecx
mov    %cl,(%rax)
mov    -0x10(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x10(%rbp)
jmp    1229 <_Converte+0x119>
jmp    11bc <_Converte+0xac>
mov    -0x1c(%rbp),%eax
mov    %eax,%ecx
add    $0xffffffff,%ecx
mov    %ecx,-0x1c(%rbp)
cmp    $0x0,%eax
je     1224 <_Converte+0x114>
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
sar    $0x4,%eax
and    $0xf,%eax
add    $0x30,%eax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
movsbl (%rax),%eax
and    $0xf,%eax
add    $0x30,%eax
mov    %al,%cl
mov    -0x10(%rbp),%rax
mov    %rax,%rdx
add    $0x1,%rdx
mov    %rdx,-0x10(%rbp)
mov    %cl,(%rax)
mov    -0x18(%rbp),%rax
add    $0x1,%rax
mov    %rax,-0x18(%rbp)
jmp    11bc <_Converte+0xac>
jmp    1229 <_Converte+0x119>
mov    -0x10(%rbp),%rax
movb   $0x0,(%rax)
mov    -0x28(%rbp),%rsi
lea    0xdc5(%rip),%rdi
mov    $0x0,%al
call   1030 <_Trace@plt>
mov    -0x4(%rbp),%eax
add    $0x30,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<_Converte>:
mov    %rdi,%r11
test   %edx,%edx
je     1157 <_Converte+0x47>
lea    -0x1(%rdx),%r10d
cmp    $0x7,%r10d
jb     113b <_Converte+0x2b>
lea    (%r10,%rsi,1),%rcx
add    $0x1,%rcx
cmp    %r11,%rcx
jbe    1192 <_Converte+0x82>
lea    (%r11,%r10,2),%rcx
add    $0x2,%rcx
cmp    %rsi,%rcx
jbe    1192 <_Converte+0x82>
mov    %r11,%rcx
test   $0x1,%dl
jne    1292 <_Converte+0x182>
mov    %edx,%edi
cmp    $0x1,%edx
jne    12b4 <_Converte+0x1a4>
jmp    12fb <_Converte+0x1eb>
mov    (%rsi),%al
shr    $0x4,%al
lea    0x30(%rax),%ecx
add    $0x37,%al
cmp    $0x3a,%cl
movzbl %al,%eax
movzbl %cl,%ecx
cmovae %eax,%ecx
mov    %cl,(%r11)
mov    (%rsi),%al
and    $0xf,%al
lea    0x30(%rax),%ecx
add    $0x37,%al
cmp    $0x3a,%cl
movzbl %al,%eax
movzbl %cl,%ecx
cmovae %eax,%ecx
mov    %cl,0x1(%r11)
lea    0x2(%r11),%rcx
jmp    12fb <_Converte+0x1eb>
add    $0x1,%r10
mov    %r10,%r8
and    $0xfffffffffffffff8,%r8
lea    -0x8(%r8),%rcx
mov    %rcx,%r9
shr    $0x3,%r9
add    $0x1,%r9
test   %rcx,%rcx
je     130f <_Converte+0x1ff>
mov    %r9,%rdi
and    $0xfffffffffffffffe,%rdi
xor    %ecx,%ecx
movdqa 0xe3a(%rip),%xmm0
movdqa 0xe42(%rip),%xmm1
movdqa 0xe4a(%rip),%xmm2
cs nopw 0x0(%rax,%rax,1)
movq   (%rsi,%rcx,1),%xmm3
movdqa %xmm3,%xmm4
psrlw  $0x4,%xmm4
pand   %xmm0,%xmm4
por    %xmm1,%xmm4
pand   %xmm2,%xmm3
por    %xmm1,%xmm3
punpcklbw %xmm3,%xmm4
movdqu %xmm4,(%r11,%rcx,2)
movq   0x8(%rsi,%rcx,1),%xmm3
movdqa %xmm3,%xmm4
psrlw  $0x4,%xmm4
pand   %xmm0,%xmm4
por    %xmm1,%xmm4
pand   %xmm2,%xmm3
por    %xmm1,%xmm3
punpcklbw %xmm3,%xmm4
movdqu %xmm4,0x10(%r11,%rcx,2)
add    $0x10,%rcx
add    $0xfffffffffffffffe,%rdi
jne    11e0 <_Converte+0xd0>
test   $0x1,%r9b
je     127a <_Converte+0x16a>
movq   (%rsi,%rcx,1),%xmm0
movdqa %xmm0,%xmm1
psrlw  $0x4,%xmm1
pand   0xda8(%rip),%xmm1
movdqa 0xdb0(%rip),%xmm2
pand   0xdb8(%rip),%xmm0
por    %xmm2,%xmm1
por    %xmm2,%xmm0
punpcklbw %xmm0,%xmm1
movdqu %xmm1,(%r11,%rcx,2)
lea    (%r11,%r8,2),%rcx
cmp    %r8,%r10
je     12fb <_Converte+0x1eb>
sub    %r8d,%edx
add    %r8,%rsi
test   $0x1,%dl
je     1147 <_Converte+0x37>
lea    -0x1(%rdx),%edi
mov    (%rsi),%al
shr    $0x4,%al
or     $0x30,%al
mov    %al,(%rcx)
mov    (%rsi),%al
and    $0xf,%al
or     $0x30,%al
mov    %al,0x1(%rcx)
add    $0x2,%rcx
add    $0x1,%rsi
cmp    $0x1,%edx
je     12fb <_Converte+0x1eb>
mov    %edi,%edx
xor    %edi,%edi
nopl   0x0(%rax,%rax,1)
movzbl (%rsi,%rdi,1),%eax
shr    $0x4,%al
or     $0x30,%al
mov    %al,(%rcx)
movzbl (%rsi,%rdi,1),%eax
and    $0xf,%al
or     $0x30,%al
mov    %al,0x1(%rcx)
movzbl 0x1(%rsi,%rdi,1),%eax
shr    $0x4,%al
or     $0x30,%al
mov    %al,0x2(%rcx)
movzbl 0x1(%rsi,%rdi,1),%eax
and    $0xf,%al
or     $0x30,%al
mov    %al,0x3(%rcx)
add    $0x4,%rcx
add    $0x2,%rdi
cmp    %edi,%edx
jne    12c0 <_Converte+0x1b0>
movb   $0x0,(%rcx)
lea    0xd2b(%rip),%rdi
mov    %r11,%rsi
xor    %eax,%eax
jmp    1030 <_Trace@plt>
xor    %ecx,%ecx
test   $0x1,%r9b
jne    1242 <_Converte+0x132>
jmp    127a <_Converte+0x16a>

LLVM IR (-O0):
@.str = [22 x i8] c" _Converte ( %s )\0A\00"
define i32 @_Converte(i8* %0, i8* %1, i32 %2) {
%4 = alloca i32
%5 = alloca i8*
%6 = alloca i8*
%7 = alloca i32
%8 = alloca i8*
store i8* %0, i8** %5
store i8* %1, i8** %6
store i32 %2, i32* %7
%9 = load i8*, i8** %5
store i8* %9, i8** %8
%10 = load i32, i32* %7
%11 = icmp ne i32 %10, 0
br i1 %11, label %54, label %12
12: ; preds = %3
%13 = load i8*, i8** %6
%14 = load i8, i8* %13
%15 = sext i8 %14 to i32
%16 = ashr i32 %15, 4
%17 = and i32 %16, 15
%18 = add nsw i32 48, %17
%19 = trunc i32 %18 to i8
%20 = load i8*, i8** %5
store i8 %19, i8* %20
%21 = load i8*, i8** %5
%22 = load i8, i8* %21
%23 = sext i8 %22 to i32
%24 = icmp sgt i32 %23, 57
br i1 %24, label %25, label %31
25: ; preds = %12
%26 = load i8*, i8** %5
%27 = load i8, i8* %26
%28 = sext i8 %27 to i32
%29 = add nsw i32 %28, 7
%30 = trunc i32 %29 to i8
store i8 %30, i8* %26
br label %31
31: ; preds = %25, %12
%32 = load i8*, i8** %5
%33 = getelementptr inbounds i8, i8* %32, i32 1
store i8* %33, i8** %5
%34 = load i8*, i8** %6
%35 = load i8, i8* %34
%36 = sext i8 %35 to i32
%37 = and i32 %36, 15
%38 = add nsw i32 48, %37
%39 = trunc i32 %38 to i8
%40 = load i8*, i8** %5
store i8 %39, i8* %40
%41 = load i8*, i8** %5
%42 = load i8, i8* %41
%43 = sext i8 %42 to i32
%44 = icmp sgt i32 %43, 57
br i1 %44, label %45, label %51
45: ; preds = %31
%46 = load i8*, i8** %5
%47 = load i8, i8* %46
%48 = sext i8 %47 to i32
%49 = add nsw i32 %48, 7
%50 = trunc i32 %49 to i8
store i8 %50, i8* %46
br label %51
51: ; preds = %45, %31
%52 = load i8*, i8** %5
%53 = getelementptr inbounds i8, i8* %52, i32 1
store i8* %53, i8** %5
br label %81
54: ; preds = %3
br label %55
55: ; preds = %77, %54
%56 = load i32, i32* %7
%57 = add nsw i32 %56, -1
store i32 %57, i32* %7
%58 = icmp ne i32 %56, 0
br i1 %58, label %59, label %80
59: ; preds = %55
%60 = load i8*, i8** %6
%61 = load i8, i8* %60
%62 = sext i8 %61 to i32
%63 = ashr i32 %62, 4
%64 = and i32 %63, 15
%65 = add nsw i32 %64, 48
%66 = trunc i32 %65 to i8
%67 = load i8*, i8** %5
%68 = getelementptr inbounds i8, i8* %67, i32 1
store i8* %68, i8** %5
store i8 %66, i8* %67
%69 = load i8*, i8** %6
%70 = load i8, i8* %69
%71 = sext i8 %70 to i32
%72 = and i32 %71, 15
%73 = add nsw i32 %72, 48
%74 = trunc i32 %73 to i8
%75 = load i8*, i8** %5
%76 = getelementptr inbounds i8, i8* %75, i32 1
store i8* %76, i8** %5
store i8 %74, i8* %75
br label %77
77: ; preds = %59
%78 = load i8*, i8** %6
%79 = getelementptr inbounds i8, i8* %78, i32 1
store i8* %79, i8** %6
br label %55
80: ; preds = %55
br label %81
81: ; preds = %80, %51
%82 = load i8*, i8** %5
store i8 0, i8* %82
%83 = load i8*, i8** %8
%84 = call i32 (i8*, i8*, ...) bitcast (i32 (...)* @_Trace to i32 (i8*, i8*, ...)*)(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), i8* %83)
%85 = load i32, i32* %4
ret i32 %85
}

LLVM IR (-O2):
@.str = [22 x i8] c" _Converte ( %s )\0A\00"
define i32 @_Converte(i8* %0, i8* nocapture %1, i32 %2) {
%4 = icmp eq i32 %2, 0
br i1 %4, label %104, label %5
5: ; preds = %3
%6 = add i32 %2, -1
%7 = zext i32 %6 to i64
%8 = add nuw nsw i64 %7, 1
%9 = icmp ult i32 %6, 7
br i1 %9, label %81, label %10
10: ; preds = %5
%11 = add i32 %2, -1
%12 = zext i32 %11 to i64
%13 = shl nuw nsw i64 %12, 1
%14 = add nuw nsw i64 %13, 2
%15 = getelementptr i8, i8* %0, i64 %14
%16 = add nuw nsw i64 %12, 1
%17 = getelementptr i8, i8* %1, i64 %16
%18 = icmp ugt i8* %17, %0
%19 = icmp ugt i8* %15, %1
%20 = and i1 %18, %19
br i1 %20, label %81, label %21
21: ; preds = %10
%22 = and i64 %8, 8589934584
%23 = shl nuw nsw i64 %22, 1
%24 = getelementptr i8, i8* %0, i64 %23
%25 = trunc i64 %22 to i32
%26 = sub i32 %2, %25
%27 = getelementptr i8, i8* %1, i64 %22
%28 = add nsw i64 %22, -8
%29 = lshr exact i64 %28, 3
%30 = add nuw nsw i64 %29, 1
%31 = and i64 %30, 1
%32 = icmp eq i64 %28, 0
br i1 %32, label %64, label %33
33: ; preds = %21
%34 = and i64 %30, 4611686018427387902
br label %35
35: ; preds = %35, %33
%36 = phi i64 [ 0, %33 ], [ %61, %35 ]
%37 = phi i64 [ 0, %33 ], [ %62, %35 ]
%38 = shl i64 %36, 1
%39 = getelementptr i8, i8* %1, i64 %36
%40 = bitcast i8* %39 to <8 x i8>*
%41 = load <8 x i8>, <8 x i8>* %40
%42 = lshr <8 x i8> %41, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4>
%43 = or <8 x i8> %42, <i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48>
%44 = and <8 x i8> %41, <i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15>
%45 = or <8 x i8> %44, <i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48>
%46 = getelementptr inbounds i8, i8* %0, i64 %38
%47 = bitcast i8* %46 to <16 x i8>*
%48 = shufflevector <8 x i8> %43, <8 x i8> %45, <16 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11, i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
store <16 x i8> %48, <16 x i8>* %47
%49 = or i64 %36, 8
%50 = shl i64 %49, 1
%51 = getelementptr i8, i8* %1, i64 %49
%52 = bitcast i8* %51 to <8 x i8>*
%53 = load <8 x i8>, <8 x i8>* %52
%54 = lshr <8 x i8> %53, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4>
%55 = or <8 x i8> %54, <i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48>
%56 = and <8 x i8> %53, <i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15>
%57 = or <8 x i8> %56, <i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48>
%58 = getelementptr inbounds i8, i8* %0, i64 %50
%59 = bitcast i8* %58 to <16 x i8>*
%60 = shufflevector <8 x i8> %55, <8 x i8> %57, <16 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11, i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
store <16 x i8> %60, <16 x i8>* %59
%61 = add nuw i64 %36, 16
%62 = add i64 %37, 2
%63 = icmp eq i64 %62, %34
br i1 %63, label %64, label %35
64: ; preds = %35, %21
%65 = phi i64 [ 0, %21 ], [ %61, %35 ]
%66 = icmp eq i64 %31, 0
br i1 %66, label %79, label %67
67: ; preds = %64
%68 = shl i64 %65, 1
%69 = getelementptr i8, i8* %1, i64 %65
%70 = bitcast i8* %69 to <8 x i8>*
%71 = load <8 x i8>, <8 x i8>* %70
%72 = lshr <8 x i8> %71, <i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4, i8 4>
%73 = or <8 x i8> %72, <i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48>
%74 = and <8 x i8> %71, <i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15, i8 15>
%75 = or <8 x i8> %74, <i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48, i8 48>
%76 = getelementptr inbounds i8, i8* %0, i64 %68
%77 = bitcast i8* %76 to <16 x i8>*
%78 = shufflevector <8 x i8> %73, <8 x i8> %75, <16 x i32> <i32 0, i32 8, i32 1, i32 9, i32 2, i32 10, i32 3, i32 11, i32 4, i32 12, i32 5, i32 13, i32 6, i32 14, i32 7, i32 15>
store <16 x i8> %78, <16 x i8>* %77
br label %79
79: ; preds = %64, %67
%80 = icmp eq i64 %8, %22
br i1 %80, label %143, label %81
81: ; preds = %10, %5, %79
%82 = phi i8* [ %0, %10 ], [ %0, %5 ], [ %24, %79 ]
%83 = phi i32 [ %2, %10 ], [ %2, %5 ], [ %26, %79 ]
%84 = phi i8* [ %1, %10 ], [ %1, %5 ], [ %27, %79 ]
%85 = and i32 %83, 1
%86 = icmp eq i32 %85, 0
br i1 %86, label %98, label %87
87: ; preds = %81
%88 = add nsw i32 %83, -1
%89 = load i8, i8* %84
%90 = lshr i8 %89, 4
%91 = or i8 %90, 48
%92 = getelementptr inbounds i8, i8* %82, i64 1
store i8 %91, i8* %82
%93 = load i8, i8* %84
%94 = and i8 %93, 15
%95 = or i8 %94, 48
%96 = getelementptr inbounds i8, i8* %82, i64 2
store i8 %95, i8* %92
%97 = getelementptr inbounds i8, i8* %84, i64 1
br label %98
98: ; preds = %87, %81
%99 = phi i8* [ undef, %81 ], [ %96, %87 ]
%100 = phi i8* [ %82, %81 ], [ %96, %87 ]
%101 = phi i32 [ %83, %81 ], [ %88, %87 ]
%102 = phi i8* [ %84, %81 ], [ %97, %87 ]
%103 = icmp eq i32 %83, 1
br i1 %103, label %143, label %119
104: ; preds = %3
%105 = load i8, i8* %1
%106 = lshr i8 %105, 4
%107 = or i8 %106, 48
%108 = icmp ugt i8 %107, 57
%109 = add nuw nsw i8 %106, 55
%110 = select i1 %108, i8 %109, i8 %107
store i8 %110, i8* %0
%111 = getelementptr inbounds i8, i8* %0, i64 1
%112 = load i8, i8* %1
%113 = and i8 %112, 15
%114 = or i8 %113, 48
%115 = icmp ugt i8 %114, 57
%116 = add nuw nsw i8 %113, 55
%117 = select i1 %115, i8 %116, i8 %114
store i8 %117, i8* %111
%118 = getelementptr inbounds i8, i8* %0, i64 2
br label %143
119: ; preds = %98, %119
%120 = phi i8* [ %140, %119 ], [ %100, %98 ]
%121 = phi i32 [ %132, %119 ], [ %101, %98 ]
%122 = phi i8* [ %141, %119 ], [ %102, %98 ]
%123 = load i8, i8* %122
%124 = lshr i8 %123, 4
%125 = or i8 %124, 48
%126 = getelementptr inbounds i8, i8* %120, i64 1
store i8 %125, i8* %120
%127 = load i8, i8* %122
%128 = and i8 %127, 15
%129 = or i8 %128, 48
%130 = getelementptr inbounds i8, i8* %120, i64 2
store i8 %129, i8* %126
%131 = getelementptr inbounds i8, i8* %122, i64 1
%132 = add nsw i32 %121, -2
%133 = load i8, i8* %131
%134 = lshr i8 %133, 4
%135 = or i8 %134, 48
%136 = getelementptr inbounds i8, i8* %120, i64 3
store i8 %135, i8* %130
%137 = load i8, i8* %131
%138 = and i8 %137, 15
%139 = or i8 %138, 48
%140 = getelementptr inbounds i8, i8* %120, i64 4
store i8 %139, i8* %136
%141 = getelementptr inbounds i8, i8* %122, i64 2
%142 = icmp eq i32 %132, 0
br i1 %142, label %143, label %119
143: ; preds = %98, %119, %79, %104
%144 = phi i8* [ %118, %104 ], [ %24, %79 ], [ %99, %98 ], [ %140, %119 ]
store i8 0, i8* %144
%145 = tail call i32 (i8*, i8*, ...) bitcast (i32 (...)* @_Trace to i32 (i8*, i8*, ...)*)(i8* getelementptr inbounds ([22 x i8], [22 x i8]* @.str, i64 0, i64 0), i8* %0)
ret i32 undef
}