Function at 0x4570e5
Capabilities:
Authenticate hmac
Encode data using base64
Parse credit card information

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x114
push ebx
push esi
mov esi, dword [ebp + 0x10]
mov ecx, dword [ebp + 0xc]
push edi
mov edi, dword [ebp + 8]
mov eax, dword [esi]
add ecx, edi
mov dword [ebp - 4], eax
mov dword [ebp - 0x14], eax
lea eax, [ebp - 0x114]
xor ebx, ebx
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x114]
and byte [esi + 0x20], bl
mov dword [ebp - 0x30], eax
lea eax, [ebp - 0x74]
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x70], eax
mov eax, dword [esi + 0x18]
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0xc], ebx
mov dword [ebp - 8], ebx
mov dword [ebp - 0x54], 1
mov dword [ebp - 0x68], ebx
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x28], eax
mov dword [esi + 0x10], ebx
mov dword [esi + 0x14], ebx
call fcn.0045b45f
cmp dword [esi + 4], ebx
push 0x1c
pop eax
jne 0x45717a
push eax
mov dword [esi + 4], eax
push dword [esi]
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
cmp eax, ebx
pop ecx
mov dword [esi], eax
je 0x45b2de
mov dword [ebp - 4], eax
mov dword [ebp - 0x14], eax
cmp edi, dword [ebp - 0x20]
je 0x45b322
mov edi, dword [ebp - 0x18]
mov edx, 0x10000
cmp edi, dword [ebp - 0x20]
je 0x45b26c
movzx eax, byte [edi]
mov ebx, dword [ebp - 0x28]
mov ecx, dword [0x499e54]
inc edi
and ebx, 1
mov dword [ebp + 0x10], eax
mov dword [ebp - 0x18], edi
mov dword [ebp - 0x24], ebx
je 0x4571ba
test ecx, ecx
je 0x4571ba
movzx eax, byte [ecx + eax]
mov dword [ebp + 0x10], eax
cmp eax, 0x2b
ja 0x45873a
cmp dword [ebp + 0x10], 0x2a
jae 0x45ac34
cmp dword [ebp + 0x10], 0x23
mov eax, dword [ebp + 0x10]
ja 0x45725b
cmp eax, 0x23
je 0x457213
cmp eax, 9
jb 0x458773
cmp eax, 0xa
jbe 0x457204
cmp eax, 0xb
jbe 0x458773
cmp eax, 0xd
jbe 0x457204
cmp eax, 0x20
jne 0x458773
test byte [ebp - 0x28], 2
je 0x458773
jmp 0x45b023
test byte [ebp - 0x28], 2
je 0x459977
cmp edi, dword [ebp - 0x20]
je 0x45b2e8
mov edx, dword [ebp - 0x18]
cmp edx, dword [ebp - 0x20]
je 0x45b26c
movzx eax, byte [edx]
inc edx
test ebx, ebx
mov dword [ebp - 0x18], edx
je 0x457245
test ecx, ecx
je 0x457245
movzx eax, byte [ecx + eax]
cmp eax, 0xa
je 0x45b023
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x20]
jne 0x457226
jmp 0x45b023
sub eax, 0x24
je 0x458615
sub eax, 4
je 0x457ae2
dec eax
jne 0x458773
mov eax, dword [ebp - 0x1c]
cmp dword [ebp - 0x30], eax
je 0x45b034
and dword [ebp - 0x10], 0
cmp dword [ebp - 0xc], 0
je 0x457316
mov ebx, dword [ebp - 4]
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x4572ff
jmp 0x4572a4
mov edx, 0x10000
mov edi, dword [esi]
cmp ecx, edx
je 0x45b2aa
add ecx, ecx
cmp ecx, edx
mov dword [esi + 4], ecx
jle 0x4572ba
mov dword [esi + 4], edx
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x4572e0
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4572e8
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x4572f3
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x45729f
mov byte [ebx], 0xe
inc ebx
push ebx
push 8
push dword [ebp - 0xc]
mov dword [ebp - 4], ebx
call fcn.0045b939
add esp, 0xc
jmp 0x457319
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 0x30]
lea edi, [eax - 4]
mov dword [ebp + 0xc], edi
mov eax, dword [edi]
cmp dword [ebp - 0x28], eax
je 0x4574a8
xor eax, dword [ebp - 0x28]
test al, 1
je 0x4573b3
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x4573a0
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x45735b
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x457381
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x457389
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x457394
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x457340
cmp dword [ebp - 0x24], 0
mov edi, dword [ebp + 0xc]
setne al
add eax, 0x1d
mov byte [ebx], al
inc ebx
mov dword [ebp - 4], ebx
mov eax, dword [edi]
xor eax, dword [ebp - 0x28]
cmp eax, 1
je 0x4574a8
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x45742d
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x4573e8
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x45740e
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x457416
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x457421
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x4573cd
mov byte [ebx], 0x1f
mov ecx, dword [esi + 4]
inc ebx
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x45749d
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x457458
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x45747e
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x457486
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x457491
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x45743d
mov eax, dword [ebp + 0xc]
mov al, byte [eax]
mov byte [ebx], al
inc ebx
mov dword [ebp - 4], ebx
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x4c], ebx
mov eax, dword [edi]
sub edi, 4
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x30], edi
mov eax, dword [edi]
mov dword [ebp + 0x10], eax
sub eax, 0x21
je 0x457869
sub eax, 7
je 0x4576eb
sub eax, 0x12
je 0x45766c
sub eax, 3
je 0x457905
dec eax
jne 0x457a97
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x457555
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x457510
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x457536
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x45753e
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x457549
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x4574f5
mov eax, dword [ebp - 0x30]
mov byte [ebx], 0x23
inc ebx
mov edi, dword [esi]
lea edx, [eax - 4]
mov al, bl
mov dword [ebp + 0xc], edx
sub al, byte [edx]
mov ecx, dword [edx]
sub al, byte [esi]
sub al, 2
mov byte [ecx + edi], al
mov eax, dword [edx]
mov edi, dword [esi]
mov ecx, ebx
sub ecx, eax
sub ecx, edi
dec ecx
dec ecx
sar ecx, 8
mov byte [eax + edi + 1], cl
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x4575f3
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x4575ab
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x4575d1
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4575d9
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x4575e4
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x457590
mov edx, dword [ebp + 0xc]
and byte [ebx], 0
mov ecx, dword [esi + 4]
inc ebx
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x457a8b
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x457622
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x457648
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x457650
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45765b
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x457607
jmp 0x457a88
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x4576df
mov eax, dword [esi]
mov dword [ebp - 0x24], eax
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x457696
mov dword [esi + 4], eax
push dword [esi + 4]
push dword [ebp - 0x24]
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
sub ecx, dword [ebp - 0x24]
add ebx, ecx
cmp dword [ebp - 0xc], 0
je 0x4576be
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], 0
je 0x4576c7
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], 0
je 0x4576d3
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x457678
mov byte [ebx], 0x1c
inc ebx
mov dword [ebp - 4], ebx
jmp 0x457a97
mov cl, byte [ebp - 0x54]
mov edx, dword [esi]
sub edi, 4
sub cl, byte [edi - 4]
lea eax, [edi - 4]
mov dword [ebp + 0xc], eax
mov eax, dword [edi]
mov byte [eax + edx], cl
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x45776d
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x457728
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x45774e
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x457756
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x457761
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x45770d
mov byte [ebx], 0x1a
mov ecx, dword [esi + 4]
inc ebx
mov edi, 0x10000
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x4577e4
mov eax, dword [esi]
cmp ecx, edi
mov dword [ebp - 0x24], eax
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x45779b
mov dword [esi + 4], edi
push dword [esi + 4]
push dword [ebp - 0x24]
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
sub ecx, dword [ebp - 0x24]
add ebx, ecx
cmp dword [ebp - 0xc], 0
je 0x4577c3
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], 0
je 0x4577cc
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], 0
je 0x4577d8
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x457782
mov eax, dword [ebp + 0xc]
mov al, byte [eax]
mov byte [ebx], al
mov ecx, dword [esi + 4]
inc ebx
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x45785a
mov eax, dword [esi]
cmp ecx, edi
mov dword [ebp - 0x24], eax
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x457811
mov dword [esi + 4], edi
push dword [esi + 4]
push dword [ebp - 0x24]
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
sub ecx, dword [ebp - 0x24]
add ebx, ecx
cmp dword [ebp - 0xc], 0
je 0x457839
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], 0
je 0x457842
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], 0
je 0x45784e
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x4577f8
mov edi, dword [ebp + 0xc]
mov al, byte [ebp - 0x54]
sub al, byte [edi]
mov byte [ebx], al
jmp 0x4576e2
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x4578d5
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x457890
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x4578b6
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4578be
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x4578c9
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x457875
mov eax, dword [ebp - 0x30]
mov byte [ebx], 0x22
inc ebx
add eax, 0xfffffffc
mov edi, dword [esi]
mov cl, bl
sub cl, byte [eax]
mov edx, dword [eax]
mov dword [ebp - 0x30], eax
sub cl, byte [esi]
sub cl, 2
mov byte [edx + edi], cl
mov edi, dword [eax]
mov ecx, dword [esi]
mov edx, ebx
sub edx, edi
sub edx, ecx
dec edx
dec edx
sar edx, 8
mov byte [edi + ecx + 1], dl
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x457971
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x45792c
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x457952
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x45795a
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x457965
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x457911
mov eax, dword [ebp - 0x30]
mov byte [ebx], 0x21
inc ebx
mov edi, dword [esi]
lea edx, [eax - 4]
mov al, bl
mov dword [ebp + 0xc], edx
sub al, byte [edx]
mov ecx, dword [edx]
sub al, byte [esi]
sub al, 2
mov byte [ecx + edi], al
mov eax, dword [edx]
mov edi, dword [esi]
mov ecx, ebx
sub ecx, eax
sub ecx, edi
dec ecx
dec ecx
sar ecx, 8
mov byte [eax + edi + 1], cl
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x457a13
mov edi, dword [esi]
cmp ecx, 0x10000
je 0x45b2aa
add ecx, ecx
mov eax, 0x10000
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x4579cb
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x4579f1
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4579f9
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x457a04
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x4579ac
mov edx, dword [ebp + 0xc]
and byte [ebx], 0
mov ecx, dword [esi + 4]
inc ebx
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x457a8b
mov edi, dword [esi]
cmp ecx, 0x10000
je 0x45b2aa
lea eax, [ecx + ecx]
mov ecx, 0x10000
cmp eax, ecx
mov dword [esi + 4], eax
jle 0x457a43
mov dword [esi + 4], ecx
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x457a69
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x457a71
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x457a7c
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x457a23
mov edx, dword [ebp + 0xc]
and byte [ebx], 0
inc ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x30], edx
mov edi, edx
mov eax, dword [esi]
mov ecx, dword [edi - 4]
sub edi, 4
add ecx, eax
sub edi, 4
mov dword [ebp - 0x14], ecx
mov ecx, dword [edi]
test ecx, ecx
je 0x457ab6
lea ecx, [ecx + eax - 1]
mov dword [ebp - 0xc], ecx
jmp 0x457aba
and dword [ebp - 0xc], 0
sub edi, 4
mov dword [ebp - 0x30], edi
mov edi, dword [edi]
add edi, eax
cmp dword [ebp + 0x10], 0x21
mov dword [ebp - 8], edi
je 0x457ada
cmp dword [ebp + 0x10], 0x3d
jne 0x45b023
mov ebx, dword [ebp - 4]
mov dword [ebp - 8], ebx
jmp 0x45b023
mov eax, dword [ebp - 0x28]
and dword [ebp - 0x34], 0
and dword [ebp - 0x64], 0
cmp edi, dword [ebp - 0x20]
mov dword [ebp - 0x6c], eax
je 0x45b26c
movzx eax, byte [edi]
inc edi
test ebx, ebx
je 0x457b09
test ecx, ecx
je 0x457b09
movzx eax, byte [ecx + eax]
cmp eax, 0x3f
jne 0x457c2f
xor ebx, ebx
cmp edi, dword [ebp - 0x20]
je 0x45b26c
movzx edx, byte [edi]
inc edi
cmp edx, 0x3e
mov dword [ebp + 0x10], edx
mov dword [ebp - 0x18], edi
ja 0x457b7f
cmp edx, 0x3d
jae 0x457c39
mov eax, edx
sub eax, 0x21
je 0x457c39
dec eax
dec eax
je 0x457b57
sub eax, 0xa
je 0x457b92
sub eax, 0xd
jne 0x45b050
jmp 0x457c39
cmp edi, dword [ebp - 0x20]
je 0x45b26c
movzx eax, byte [edi]
inc edi
cmp dword [ebp - 0x24], 0
mov dword [ebp - 0x18], edi
je 0x457b75
test ecx, ecx
je 0x457b75
movzx eax, byte [ecx + eax]
cmp eax, 0x29
jne 0x457b57
jmp 0x45b023
cmp edx, 0x69
je 0x457b92
cmp edx, 0x6d
je 0x457b92
cmp edx, 0x78
jne 0x45b050
push 1
pop eax
cmp edx, 0x29
je 0x457c2b
cmp edx, 0x2d
je 0x457c0c
cmp edx, 0x3a
je 0x457c39
cmp edx, 0x69
je 0x457bee
cmp edx, 0x6d
je 0x457bcf
cmp edx, 0x78
jne 0x45b06f
test ebx, ebx
je 0x457bc9
and dword [ebp - 0x28], 0xfffffffd
jmp 0x457c13
or dword [ebp - 0x28], 2
jmp 0x457c13
test ebx, ebx
je 0x457bdf
test byte [ebp - 0x28], 4
je 0x457be9
and dword [ebp - 0x28], 0xfffffffb
jmp 0x457be9
test byte [ebp - 0x28], 4
jne 0x457be9
or dword [ebp - 0x28], 4
mov dword [ebp - 0x34], eax
jmp 0x457c13
test ebx, ebx
je 0x457bfe
test byte [ebp - 0x28], 1
je 0x457c07
and dword [ebp - 0x28], 0xfffffffe
jmp 0x457c07
test byte [ebp - 0x28], 1
jne 0x457c07
or dword [ebp - 0x28], eax
mov dword [ebp - 0x64], eax
jmp 0x457c13
cmp edx, 0x3a
mov ebx, eax
je 0x457c39
cmp edi, dword [ebp - 0x20]
je 0x45b26c
movzx edx, byte [edi]
inc edi
mov dword [ebp + 0x10], edx
mov dword [ebp - 0x18], edi
jmp 0x457b95
push 0x23
jmp 0x457c35
dec edi
push 0x28
mov dword [ebp - 0x18], edi
pop edx
mov dword [ebp + 0x10], edx
cmp edx, 0x23
jne 0x457e32
cmp dword [ebp - 0x34], 0
je 0x457d34
mov edi, dword [ebp - 4]
mov ecx, dword [esi + 4]
mov eax, edi
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x457cbb
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x457c76
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x457c9c
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x457ca4
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x457caf
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
inc edx
cmp edx, ecx
jge 0x457c5b
mov byte [edi], 0x1f
mov ecx, dword [esi + 4]
inc edi
mov eax, edi
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x457d2b
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x457ce6
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x457d0c
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x457d14
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x457d1f
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
inc edx
cmp edx, ecx
jge 0x457ccb
mov al, byte [ebp - 0x28]
mov byte [edi], al
inc edi
mov dword [ebp - 4], edi
cmp dword [ebp - 0x64], 0
je 0x45b023
test byte [ebp - 0x28], 1
mov ecx, dword [esi + 4]
mov eax, dword [ebp - 4]
je 0x457dbe
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x457db3
mov ebx, 0x10000
mov edi, dword [esi]
cmp ecx, ebx
je 0x45b2aa
add ecx, ecx
cmp ecx, ebx
mov dword [esi + 4], ecx
jle 0x457d6c
mov dword [esi + 4], ebx
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x457d93
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x457d9b
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x457da6
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x457d56
mov eax, dword [ebp - 4]
mov byte [eax], 0x1d
jmp 0x459562
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x457e27
mov ebx, 0x10000
mov edi, dword [esi]
cmp ecx, ebx
je 0x45b2aa
add ecx, ecx
cmp ecx, ebx
mov dword [esi + 4], ecx
jle 0x457de0
mov dword [esi + 4], ebx
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x457e07
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x457e0f
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x457e1a
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x457dca
mov eax, dword [ebp - 4]
mov byte [eax], 0x1e
jmp 0x459562
mov edi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x70]
lea ecx, [edi + 0x20]
cmp ecx, eax
jb 0x457eb7
sub eax, dword [ebp - 0x1c]
sar eax, 2
mov dword [ebp + 0xc], eax
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
mov eax, dword [ebp + 0xc]
mov edi, eax
jne 0x457e82
shl edi, 3
push edi
call dword [sym.imp.MSVCRT.dll_malloc]
mov ebx, eax
pop ecx
test ebx, ebx
je 0x45b2c9
mov eax, dword [ebp + 0xc]
shl eax, 2
push eax
push dword [ebp - 0x1c]
push ebx
call sub.MSVCRT.dll_memcpy
add esp, 0xc
jmp 0x457e9b
shl edi, 3
push edi
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_realloc]
mov ebx, eax
pop ecx
test ebx, ebx
pop ecx
je 0x45b2c9
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp + 0x10]
sub eax, dword [ebp - 0x1c]
mov dword [ebp - 0x1c], ebx
sar eax, 2
add edi, ebx
lea eax, [ebx + eax*4]
mov dword [ebp - 0x70], edi
mov dword [ebp - 0x30], eax
mov edi, eax
mov ebx, dword [ebp - 4]
mov eax, ebx
sub eax, dword [esi]
mov dword [edi], eax
mov eax, dword [ebp - 0xc]
add edi, 4
test eax, eax
je 0x457ecf
sub eax, dword [esi]
inc eax
jmp 0x457ed1
xor eax, eax
mov dword [edi], eax
mov eax, dword [ebp - 0x14]
sub eax, dword [esi]
add edi, 4
mov dword [edi], eax
add edi, 4
cmp edx, 0x21
mov dword [ebp - 0x30], edi
je 0x45811e
cmp edx, 0x28
je 0x457f8f
cmp edx, 0x3a
je 0x457f11
cmp edx, 0x3c
jbe 0x458406
cmp edx, 0x3e
jbe 0x45811e
jmp 0x458406
sub ebx, dword [esi]
mov ecx, dword [esi + 4]
inc ebx
cmp ebx, ecx
jl 0x457f7d
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x457f36
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x457f5d
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x457f65
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x457f70
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x457f1b
mov eax, dword [ebp - 4]
inc dword [ebp - 4]
and dword [ebp - 0x10], 0
mov byte [eax], 0x1b
jmp 0x458406
sub ebx, dword [esi]
mov ecx, dword [esi + 4]
inc ebx
cmp ebx, ecx
jl 0x457ffb
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x457fb4
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x457fdb
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x457fe3
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x457fee
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x457f99
mov eax, dword [ebp - 4]
inc dword [ebp - 4]
mov byte [eax], 0x19
mov eax, dword [ebp - 4]
sub eax, dword [esi]
mov ecx, dword [esi + 4]
inc eax
cmp eax, ecx
jl 0x458073
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x45802c
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x458053
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x45805b
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x458066
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x458011
mov ecx, dword [ebp - 4]
mov eax, dword [ebp - 0x54]
inc dword [ebp - 4]
mov byte [ecx], al
mov dword [edi], eax
add edi, 4
inc eax
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 4]
sub eax, dword [esi]
mov dword [edi], eax
mov eax, dword [ebp - 4]
sub eax, dword [esi]
mov ecx, dword [esi + 4]
add edi, 4
inc eax
mov dword [ebp - 0x30], edi
cmp eax, ecx
jl 0x458103
mov edi, 0x10000
mov ebx, dword [esi]
cmp ecx, edi
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x4580bc
mov dword [esi + 4], edi
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x4580e3
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4580eb
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x4580f6
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x4580a6
mov eax, dword [ebp - 4]
and byte [eax], 0
inc dword [ebp - 4]
cmp dword [ebp - 0x54], 0xff
jge 0x45b2aa
jmp 0x458406
sub ebx, dword [esi]
mov ecx, dword [esi + 4]
inc ebx
cmp ebx, ecx
jl 0x45818a
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x458143
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x45816a
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x458172
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45817d
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x458128
mov eax, dword [ebp - 4]
inc dword [ebp - 4]
mov byte [eax], 0x20
mov eax, dword [ebp - 4]
sub eax, dword [esi]
mov dword [edi], eax
mov eax, dword [ebp - 4]
sub eax, dword [esi]
mov ecx, dword [esi + 4]
add edi, 4
inc eax
mov dword [ebp - 0x30], edi
cmp eax, ecx
jl 0x45820f
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x4581c8
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x4581ef
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4581f7
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x458202
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x4581ad
mov eax, dword [ebp - 4]
and byte [eax], 0
inc dword [ebp - 4]
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x458287
mov edi, 0x10000
mov ebx, dword [esi]
cmp ecx, edi
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x458240
mov dword [esi + 4], edi
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x458267
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x45826f
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45827a
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x45822a
mov eax, dword [ebp - 4]
and byte [eax], 0
inc dword [ebp - 4]
cmp dword [ebp + 0x10], 0x21
jne 0x458406
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
mov edi, 0x10000
inc eax
cmp eax, ecx
jl 0x458309
mov ebx, dword [esi]
cmp ecx, edi
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x4582c2
mov dword [esi + 4], edi
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x4582e9
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4582f1
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x4582fc
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x4582ac
mov eax, dword [ebp - 4]
inc dword [ebp - 4]
mov ecx, dword [ebp - 0x30]
add dword [ebp - 0x30], 4
mov byte [eax], 0xa
mov eax, dword [ebp - 4]
sub eax, dword [esi]
mov dword [ecx], eax
mov eax, dword [ebp - 4]
sub eax, dword [esi]
mov ecx, dword [esi + 4]
inc eax
cmp eax, ecx
jl 0x45838a
mov ebx, dword [esi]
cmp ecx, edi
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x458343
mov dword [esi + 4], edi
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x45836a
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x458372
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45837d
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x45832d
mov eax, dword [ebp - 4]
and byte [eax], 0
inc dword [ebp - 4]
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x4583fd
mov ebx, dword [esi]
cmp ecx, edi
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x4583b6
mov dword [esi + 4], edi
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x4583dd
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4583e5
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x4583f0
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x4583a0
mov eax, dword [ebp - 4]
and byte [eax], 0
inc dword [ebp - 4]
cmp dword [ebp - 0x34], 0
je 0x4584fd
mov edi, dword [ebp - 4]
mov ecx, dword [esi + 4]
mov eax, edi
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x45847f
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x45843a
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x458460
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x458468
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x458473
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
inc edx
cmp edx, ecx
jge 0x45841f
mov byte [edi], 0x1f
mov ecx, dword [esi + 4]
inc edi
mov dword [ebp - 4], edi
sub edi, dword [esi]
inc edi
cmp edi, ecx
jl 0x4584f2
mov edi, 0x10000
mov ebx, dword [esi]
cmp ecx, edi
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x4584ab
mov dword [esi + 4], edi
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x4584d2
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4584da
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x4584e5
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x458495
mov ecx, dword [ebp - 4]
mov al, byte [ebp - 0x28]
inc dword [ebp - 4]
mov byte [ecx], al
cmp dword [ebp - 0x64], 0
mov edi, dword [ebp - 4]
je 0x4585ef
test byte [ebp - 0x28], 1
mov ecx, dword [esi + 4]
mov eax, edi
je 0x458581
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x45857c
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x458537
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x45855d
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x458565
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x458570
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
inc edx
cmp edx, ecx
jge 0x45851c
mov byte [edi], 0x1d
jmp 0x4585eb
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x4585e8
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x4585a3
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x4585c9
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4585d1
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x4585dc
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
inc edx
cmp edx, ecx
jge 0x458588
mov byte [edi], 0x1e
inc edi
mov dword [ebp - 4], edi
mov eax, dword [ebp - 0x30]
mov ecx, dword [ebp + 0x10]
and dword [ebp - 0xc], 0
mov dword [ebp - 0x14], edi
mov dword [eax], ecx
mov ecx, dword [ebp - 0x6c]
add eax, 4
mov dword [eax], ecx
add eax, 4
and dword [ebp - 8], 0
mov dword [ebp - 0x30], eax
jmp 0x45b023
test byte [esi + 0x18], 8
je 0x458694
mov edi, dword [ebp - 4]
mov ecx, dword [esi + 4]
mov eax, edi
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x45868c
jmp 0x458631
mov edx, 0x10000
mov ebx, dword [esi]
cmp ecx, edx
je 0x45b2aa
add ecx, ecx
cmp ecx, edx
mov dword [esi + 4], ecx
jle 0x458647
mov dword [esi + 4], edx
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x45866d
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x458675
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x458680
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
inc edx
cmp edx, ecx
jge 0x45862c
mov byte [edi], 5
jmp 0x45b01f
cmp edi, dword [ebp - 0x20]
mov eax, edi
mov dword [ebp - 0x4c], eax
je 0x4586c1
cmp byte [eax], 0x5c
jne 0x4586c1
lea ecx, [eax + 1]
cmp ecx, dword [ebp - 0x20]
je 0x4586c1
mov cl, byte [ecx]
cmp cl, 0x62
je 0x4586b7
cmp cl, 0x42
jne 0x4586c1
inc eax
inc eax
cmp eax, dword [ebp - 0x20]
mov dword [ebp - 0x4c], eax
jne 0x45869e
mov edi, dword [ebp - 4]
mov ecx, dword [esi + 4]
mov eax, edi
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x458732
jmp 0x4586d7
mov edx, 0x10000
mov ebx, dword [esi]
cmp ecx, edx
je 0x45b2aa
add ecx, ecx
cmp ecx, edx
mov dword [esi + 4], ecx
jle 0x4586ed
mov dword [esi + 4], edx
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x458713
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x45871b
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x458726
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
inc edx
cmp edx, ecx
jge 0x4586d2
mov byte [edi], 3
jmp 0x45b01f
mov eax, dword [ebp + 0x10]
sub eax, 0x2e
je 0x45afa8
sub eax, 0x11
je 0x45ac34
sub eax, 0x1c
je 0x459de7
dec eax
je 0x459116
dec eax
dec eax
je 0x459026
sub eax, 0x1d
je 0x4588bf
dec eax
je 0x45879a
cmp dword [ebp + 0x10], 0x5d
jne 0x458780
push str.regexp_has____without_escape
jmp 0x45878f
cmp dword [ebp + 0x10], 0x7d
jne 0x459977
push str.regexp_has___without_escape
call sym.ruby187g.exc_rb_warn
pop ecx
jmp 0x459977
mov ebx, dword [ebp - 4]
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
add eax, 3
cmp eax, ecx
jl 0x45880d
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x4587c6
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x4587ec
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4587f4
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x4587ff
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
add edx, 3
cmp edx, ecx
jge 0x4587ab
lea eax, [ebx + 6]
push ebx
push eax
push dword [ebp - 0x14]
push 0xa
call fcn.0045b95d
and dword [ebp - 0x10], 0
add esp, 0x10
add ebx, 3
cmp dword [ebp - 0xc], 0
je 0x45883a
push ebx
push 9
push dword [ebp - 0xc]
call fcn.0045b939
add esp, 0xc
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
mov dword [ebp - 0xc], ebx
add eax, 3
cmp eax, ecx
jl 0x4588ad
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x458866
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x45888c
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x458894
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45889f
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
add edx, 3
cmp edx, ecx
jge 0x45884b
add ebx, 3
and dword [ebp - 8], 0
mov dword [ebp - 4], ebx
mov dword [ebp - 0x14], ebx
jmp 0x45b023
cmp dword [ebp - 8], 0
je 0x45b08e
cmp edi, dword [ebp - 0x20]
je 0x45b0af
or dword [ebp + 0xc], 0xffffffff
or dword [ebp - 0x34], 0xffffffff
movzx ebx, byte [edi]
lea eax, [edi - 1]
inc edi
cmp dword [ebp - 0x24], 0
mov dword [ebp + 0x10], eax
mov dword [ebp - 0x18], edi
je 0x4588f5
test ecx, ecx
je 0x4588f5
movzx ebx, byte [ecx + ebx]
mov edi, dword [sym.imp.MSVCRT.dll__isctype]
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x458914
push 4
push ebx
call edi
pop ecx
pop ecx
mov ecx, dword [0x499e54]
jmp 0x458921
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov eax, dword [eax]
mov al, byte [eax + ebx*2]
and eax, 4
test eax, eax
je 0x45895b
cmp dword [ebp + 0xc], 0
jge 0x45892f
and dword [ebp + 0xc], 0
mov eax, dword [ebp + 0xc]
lea eax, [eax + eax*4]
lea eax, [ebx + eax*2 - 0x30]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x20]
je 0x45895b
movzx ebx, byte [eax]
inc eax
cmp dword [ebp - 0x24], 0
mov dword [ebp - 0x18], eax
je 0x4588fb
test ecx, ecx
je 0x4588fb
movzx ebx, byte [ecx + ebx]
jmp 0x4588fb
cmp ebx, 0x2c
jne 0x4589bc
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x20]
je 0x4589c2
movzx ebx, byte [eax]
inc eax
cmp dword [ebp - 0x24], 0
mov dword [ebp - 0x18], eax
je 0x45897d
test ecx, ecx
je 0x45897d
movzx ebx, byte [ecx + ebx]
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x458996
push 4
push ebx
call edi
pop ecx
pop ecx
mov ecx, dword [0x499e54]
jmp 0x4589a3
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov eax, dword [eax]
mov al, byte [eax + ebx*2]
and eax, 4
test eax, eax
je 0x4589c2
mov eax, dword [ebp - 0x34]
test eax, eax
jge 0x4589b0
xor eax, eax
lea eax, [eax + eax*4]
lea eax, [ebx + eax*2 - 0x30]
mov dword [ebp - 0x34], eax
jmp 0x458960
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x34], eax
cmp dword [ebp + 0xc], 0
jl 0x458fe5
cmp ebx, 0x7d
jne 0x458fe5
mov edx, 0x7fff
cmp dword [ebp + 0xc], edx
jge 0x45b0ed
mov ebx, dword [ebp - 0x34]
cmp ebx, edx
jge 0x45b0ed
test ebx, ebx
jge 0x4589f7
mov ebx, edx
mov dword [ebp - 0x34], ebx
cmp dword [ebp + 0xc], ebx
jg 0x45b0ce
mov edi, dword [ebp - 0x18]
and dword [ebp - 0x10], 0
cmp edi, dword [ebp - 0x20]
mov byte [ebp + 0x13], 1
je 0x458a34
movzx eax, byte [edi]
inc edi
cmp dword [ebp - 0x24], 0
mov dword [ebp - 0x18], edi
je 0x458a25
test ecx, ecx
je 0x458a25
movzx eax, byte [ecx + eax]
cmp eax, 0x3f
jne 0x458a30
and byte [ebp + 0x13], 0
jmp 0x458a34
dec edi
mov dword [ebp - 0x18], edi
cmp dword [ebp + 0xc], 0
jne 0x458a53
cmp ebx, edx
mov byte [ebp - 0x29], 1
jne 0x458a48
mov byte [ebp + 0xf], 1
jmp 0x458a72
cmp ebx, 1
jne 0x458a7c
and byte [ebp + 0xf], 0
jmp 0x458a72
cmp dword [ebp + 0xc], 1
jne 0x458a7c
cmp ebx, 1
je 0x45b023
cmp ebx, 0x7fff
jne 0x458a7c
and byte [ebp - 0x29], 0
mov byte [ebp + 0xf], 1
mov edx, 0x10000
jmp 0x45ac87
mov eax, dword [ebp - 0x34]
mov edi, 0x10000
test eax, eax
jne 0x458b0c
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
add eax, 3
cmp eax, ecx
jl 0x458afa
mov ebx, dword [esi]
cmp ecx, edi
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x458ab1
mov dword [esi + 4], edi
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x458ad8
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x458ae0
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x458aeb
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
add edx, 3
cmp edx, ecx
jge 0x458a9b
mov eax, dword [ebp - 4]
push eax
lea ebx, [eax + 3]
push ebx
push dword [ebp - 8]
push 8
jmp 0x45af10
cmp dword [ebp + 0xc], eax
jne 0x458dd6
mov eax, dword [ebp - 4]
and dword [ebp - 0x24], 0
dec eax
cmp byte [eax], 0x1c
jne 0x458b2c
mov dword [ebp - 0x24], 1
mov dword [ebp - 4], eax
mov eax, dword [ebp - 8]
cmp byte [eax], 1
jne 0x458c94
movsx edx, byte [eax + 1]
mov ecx, dword [ebp - 4]
mov dword [ebp - 0x64], edx
sub ecx, eax
lea eax, [edx + 2]
cmp eax, ecx
jne 0x458c94
mov eax, dword [ebp + 0xc]
mov ecx, eax
imul ecx, edx
cmp ecx, 0x100
jge 0x458c94
dec eax
mov ebx, edx
imul ebx, eax
mov ecx, dword [esi + 4]
mov dword [ebp + 0x10], eax
mov eax, ebx
sub eax, dword [esi]
add eax, dword [ebp - 4]
cmp eax, ecx
jl 0x458be0
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x458b95
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x458bbc
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x458bc4
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x458bcf
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
add edx, dword [ebp - 4]
cmp edx, ecx
jge 0x458b7a
mov edx, dword [ebp - 0x64]
mov al, dl
mov ecx, dword [ebp - 8]
imul byte [ebp + 0xc]
mov ebx, dword [ebp + 0x10]
mov byte [ecx + 1], al
test ebx, ebx
je 0x458c10
lea edi, [ecx + 2]
jmp 0x458bfa
mov edx, dword [ebp - 0x64]
push edx
push edi
push dword [ebp - 4]
call sub.MSVCRT.dll_memcpy
mov eax, dword [ebp - 0x64]
add esp, 0xc
add dword [ebp - 4], eax
dec ebx
jne 0x458bf7
cmp dword [ebp - 0x24], 0
je 0x45b023
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x458c89
mov edi, 0x10000
mov ebx, dword [esi]
cmp ecx, edi
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x458c42
mov dword [esi + 4], edi
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x458c69
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x458c71
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x458c7c
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x458c2c
mov eax, dword [ebp - 4]
mov byte [eax], 0x1c
jmp 0x459562
mov eax, dword [ebp + 0xc]
cmp eax, 5
jge 0x458dcd
mov ebx, dword [ebp - 4]
sub ebx, dword [ebp - 8]
cmp ebx, 0xa
mov dword [ebp - 0x6c], ebx
jge 0x458dcd
dec eax
mov ecx, dword [esi + 4]
imul ebx, eax
mov dword [ebp + 0x10], eax
mov eax, ebx
sub eax, dword [esi]
add eax, dword [ebp - 4]
cmp eax, ecx
jl 0x458d2a
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x458ce2
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x458d09
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x458d11
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x458d1c
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
add edx, dword [ebp - 4]
cmp edx, ecx
jge 0x458cc7
cmp dword [ebp + 0x10], 0
je 0x458d4b
mov edi, dword [ebp + 0x10]
mov ebx, dword [ebp - 0x6c]
push ebx
push dword [ebp - 8]
push dword [ebp - 4]
call sub.MSVCRT.dll_memcpy
add dword [ebp - 4], ebx
add esp, 0xc
dec edi
jne 0x458d33
cmp dword [ebp - 0x24], 0
je 0x45b023
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x458c89
mov ebx, 0x10000
mov edi, dword [esi]
cmp ecx, ebx
je 0x45b2aa
add ecx, ecx
cmp ecx, ebx
mov dword [esi + 4], ecx
jle 0x458d81
mov dword [esi + 4], ebx
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x458da8
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x458db0
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x458dbb
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x458d6b
jmp 0x458c89
cmp dword [ebp - 0x24], 0
je 0x458dd6
inc dword [ebp - 4]
mov ebx, dword [ebp - 0x34]
dec ebx
neg ebx
sbb ebx, ebx
and ebx, 0xa
add ebx, 0xa
cmp dword [ebp + 0xc], 0
jne 0x458e83
cmp byte [ebp + 0x13], 0
jne 0x458e83
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
add eax, 3
cmp eax, ecx
jl 0x458e6b
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x458e22
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x458e49
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x458e51
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x458e5c
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
add edx, 3
cmp edx, ecx
jge 0x458e07
mov eax, dword [ebp - 4]
push eax
lea edi, [eax + 3]
push edi
push dword [ebp - 8]
push 0x11
call fcn.0045b95d
add esp, 0x10
mov dword [ebp - 4], edi
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
add eax, dword [ebp - 4]
cmp eax, ecx
jb 0x458ef4
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x458eac
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x458ed3
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x458edb
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x458ee6
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
add edx, dword [ebp - 4]
cmp edx, ecx
jae 0x458e91
push dword [ebp + 0xc]
shr ebx, 1
push dword [ebp - 4]
add ebx, dword [ebp - 4]
push ebx
push dword [ebp - 8]
push 0xf
call fcn.0045b9b5
push 5
pop edi
push dword [ebp + 0xc]
add dword [ebp - 4], edi
push edi
push dword [ebp - 4]
push dword [ebp - 8]
push 0x14
call fcn.0045b9df
add dword [ebp - 4], edi
add esp, 0x28
cmp dword [ebp - 0x34], 1
jle 0x45b023
mov ebx, dword [ebp - 4]
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
add eax, edi
cmp eax, ecx
jl 0x458fa3
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x458f5c
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x458f82
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x458f8a
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x458f95
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
add edx, 5
cmp edx, ecx
jge 0x458f41
mov edi, dword [ebp - 0x34]
lea eax, [edi - 1]
push eax
mov eax, dword [ebp - 8]
add eax, 5
push eax
mov al, byte [ebp + 0x13]
neg al
sbb eax, eax
and al, 0xfd
add eax, 0x13
push eax
push ebx
call fcn.0045b984
add ebx, 5
dec edi
mov eax, ebx
push edi
sub eax, dword [ebp - 8]
push eax
push ebx
push dword [ebp - 8]
push 0x14
call fcn.0045b9df
add esp, 0x24
add ebx, 5
jmp 0x45af18
push str.regexp_has_invalid_interval
call sym.ruby187g.exc_rb_warn
mov eax, dword [ebp + 0x10]
pop ecx
cmp eax, dword [ebp - 0x20]
je 0x45b26c
movzx ecx, byte [eax]
inc eax
cmp dword [ebp - 0x24], 0
mov dword [ebp + 0x10], ecx
mov dword [ebp - 0x18], eax
je 0x459974
mov eax, dword [0x499e54]
test eax, eax
je 0x459974
movzx eax, byte [eax + ecx]
jmp 0x459971
mov edi, dword [ebp - 4]
mov ecx, dword [esi + 4]
test byte [esi + 0x18], 8
mov eax, edi
je 0x4590a5
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x45909d
jmp 0x459042
mov edx, 0x10000
mov ebx, dword [esi]
cmp ecx, edx
je 0x45b2aa
add ecx, ecx
cmp ecx, edx
mov dword [esi + 4], ecx
jle 0x459058
mov dword [esi + 4], edx
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x45907e
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459086
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x459091
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
inc edx
cmp edx, ecx
jge 0x45903d
mov byte [edi], 4
jmp 0x45b01f
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x45910e
jmp 0x4590b3
mov edx, 0x10000
mov ebx, dword [esi]
cmp ecx, edx
je 0x45b2aa
add ecx, ecx
cmp ecx, edx
mov dword [esi + 4], ecx
jle 0x4590c9
mov dword [esi + 4], edx
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x4590ef
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4590f7
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x459102
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
inc edx
cmp edx, ecx
jge 0x4590ae
mov byte [edi], 2
jmp 0x45b01f
cmp edi, dword [ebp - 0x20]
je 0x45b10c
mov ebx, dword [ebp - 0x18]
movzx edi, byte [ebx]
inc ebx
cmp edi, 0x57
mov dword [ebp + 0x10], edi
mov dword [ebp - 0x18], ebx
ja 0x45956a
je 0x4594ea
cmp edi, 0x43
ja 0x459454
je 0x459598
cmp edi, 0x30
je 0x459439
jbe 0x45996a
cmp edi, 0x39
jbe 0x459268
cmp edi, 0x41
je 0x4591ee
cmp edi, 0x42
jne 0x45996a
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x4591e3
mov ebx, 0x10000
mov edi, dword [esi]
cmp ecx, ebx
je 0x45b2aa
add ecx, ecx
cmp ecx, ebx
mov dword [esi + 4], ecx
jle 0x45919c
mov dword [esi + 4], ebx
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x4591c3
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4591cb
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x4591d6
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x459186
mov eax, dword [ebp - 4]
mov byte [eax], 0x2a
jmp 0x459562
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x45925d
mov ebx, 0x10000
mov edi, dword [esi]
cmp ecx, ebx
je 0x45b2aa
add ecx, ecx
cmp ecx, ebx
mov dword [esi + 4], ecx
jle 0x459216
mov dword [esi + 4], ebx
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x45923d
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459245
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x459250
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x459200
mov eax, dword [ebp - 4]
mov byte [eax], 4
jmp 0x459562
dec ebx
xor eax, eax
cmp ebx, dword [ebp - 0x20]
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x44], eax
je 0x4592e1
movzx edi, byte [ebx]
inc ebx
cmp dword [ebp - 0x24], eax
mov dword [ebp - 0x18], ebx
je 0x459290
cmp ecx, eax
je 0x459290
movzx edi, byte [ecx + edi]
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x4592ad
push 4
push edi
call dword [sym.imp.MSVCRT.dll__isctype]
pop ecx
pop ecx
mov ecx, dword [0x499e54]
jmp 0x4592ba
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov eax, dword [eax]
mov al, byte [eax + edi*2]
and eax, 4
test eax, eax
je 0x4592e1
mov eax, dword [ebp - 0x44]
cmp ebx, dword [ebp - 0x20]
lea eax, [eax + eax*4]
lea eax, [edi + eax*2 - 0x30]
mov dword [ebp - 0x44], eax
je 0x4592e1
movzx edi, byte [ebx]
inc ebx
cmp dword [ebp - 0x24], 0
mov dword [ebp - 0x18], ebx
je 0x459290
test ecx, ecx
jmp 0x45928a
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x4592f8
push 4
push edi
call dword [sym.imp.MSVCRT.dll__isctype]
pop ecx
pop ecx
jmp 0x459305
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov eax, dword [eax]
mov al, byte [eax + edi*2]
and eax, 4
test eax, eax
jne 0x45930d
dec ebx
mov dword [ebp - 0x18], ebx
mov eax, dword [ebp - 0x44]
cmp eax, 9
jbe 0x459347
cmp eax, dword [ebp - 0x54]
jb 0x459347
lea eax, [ebp - 0x50]
push eax
push 3
push dword [ebp - 0x4c]
call sym.ruby187g.exc_ruby_scan_oct
mov ecx, dword [ebp - 0x50]
and eax, 0xff
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x4c]
add ecx, eax
add esp, 0xc
and dword [ebp - 0x44], 0
mov dword [ebp - 0x18], ecx
jmp 0x459a43
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
mov dword [ebp - 8], eax
sub eax, dword [esi]
mov edi, 0x10000
inc eax
cmp eax, ecx
jl 0x4593b9
mov ebx, dword [esi]
cmp ecx, edi
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x459372
mov dword [esi + 4], edi
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x459399
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4593a1
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x4593ac
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x45935c
mov eax, dword [ebp - 4]
inc dword [ebp - 4]
mov byte [eax], 0x24
mov eax, dword [ebp - 4]
sub eax, dword [esi]
mov ecx, dword [esi + 4]
inc eax
cmp eax, ecx
jl 0x45942c
mov ebx, dword [esi]
cmp ecx, edi
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x4593e5
mov dword [esi + 4], edi
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x45940c
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459414
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45941f
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x4593cf
mov ecx, dword [ebp - 4]
mov al, byte [ebp - 0x44]
mov byte [ecx], al
jmp 0x459562
and dword [ebp - 0x38], 0
lea eax, [ebp - 0x50]
push eax
push 2
push ebx
call sym.ruby187g.exc_ruby_scan_oct
add esp, 0xc
mov dword [ebp + 0x10], eax
jmp 0x459a3d
cmp edi, 0x44
je 0x4596c3
cmp edi, 0x47
je 0x459473
cmp edi, 0x4d
je 0x459598
cmp edi, 0x53
jmp 0x45958d
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x4594e2
mov ebx, 0x10000
mov edi, dword [esi]
cmp ecx, ebx
je 0x45b2aa
add ecx, ecx
cmp ecx, ebx
mov dword [esi + 4], ecx
jle 0x45949b
mov dword [esi + 4], ebx
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x4594c2
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4594ca
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x4594d5
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x459485
mov eax, dword [ebp - 4]
mov byte [eax], 7
jmp 0x459562
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
mov dword [ebp - 8], eax
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x45955c
mov ebx, 0x10000
mov edi, dword [esi]
cmp ecx, ebx
je 0x45b2aa
add ecx, ecx
cmp ecx, ebx
mov dword [esi + 4], ecx
jle 0x459515
mov dword [esi + 4], ebx
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x45953c
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459544
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45954f
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x4594ff
mov eax, dword [ebp - 4]
mov byte [eax], 0x26
inc dword [ebp - 4]
jmp 0x45b023
cmp edi, 0x73
ja 0x459954
je 0x4596c3
mov eax, edi
sub eax, 0x5a
je 0x45963f
sub eax, 8
je 0x4595c5
dec eax
je 0x459598
dec eax
je 0x4596c3
jmp 0x45996a
lea eax, [ebp - 0x4c]
dec ebx
push eax
mov dword [ebp - 0x4c], ebx
push dword [ebp - 0x20]
push ebx
call fcn.0045b82e
add esp, 0xc
cmp eax, 0xff
mov dword [ebp + 0x10], eax
ja 0x45b1a7
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x18], eax
jmp 0x459a43
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x459634
mov ebx, 0x10000
mov edi, dword [esi]
cmp ecx, ebx
je 0x45b2aa
add ecx, ecx
cmp ecx, ebx
mov dword [esi + 4], ecx
jle 0x4595ed
mov dword [esi + 4], ebx
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x459614
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x45961c
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x459627
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x4595d7
mov eax, dword [ebp - 4]
mov byte [eax], 0x29
jmp 0x459562
test byte [esi + 0x18], 8
jne 0x4599a3
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x4596b8
mov ebx, 0x10000
mov edi, dword [esi]
cmp ecx, ebx
je 0x45b2aa
add ecx, ecx
cmp ecx, ebx
mov dword [esi + 4], ecx
jle 0x459671
mov dword [esi + 4], ebx
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x459698
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4596a0
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x4596ab
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x45965b
mov eax, dword [ebp - 4]
mov byte [eax], 6
jmp 0x459562
mov ebx, dword [ebp - 4]
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
add eax, 0x29
cmp eax, ecx
jle 0x45973d
mov eax, dword [esi]
mov dword [ebp - 0x24], eax
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x4596f2
mov dword [esi + 4], eax
push dword [esi + 4]
push dword [ebp - 0x24]
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
sub ecx, dword [ebp - 0x24]
add ebx, ecx
cmp dword [ebp - 0xc], 0
je 0x45971a
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], 0
je 0x459723
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], 0
je 0x45972f
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
add edx, 0x29
cmp edx, ecx
jg 0x4596d4
cmp edi, 0x73
mov dword [ebp - 8], ebx
je 0x4597bb
cmp edi, 0x64
je 0x4597bb
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x4597b6
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x459771
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x459797
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x45979f
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x4597aa
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x459756
mov byte [ebx], 0x18
jmp 0x45982a
mov ecx, dword [esi + 4]
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x459827
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x4597e2
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x459808
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459810
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45981b
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x4597c7
mov byte [ebx], 0x17
mov ecx, dword [esi + 4]
inc ebx
mov eax, ebx
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x459897
mov edi, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x459852
mov dword [esi + 4], eax
push dword [esi + 4]
push edi
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, edi
add ebx, ecx
cmp dword [ebp - 0xc], edx
je 0x459878
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459880
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45988b
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, ebx
sub edx, eax
inc edx
cmp edx, ecx
jge 0x459837
mov byte [ebx], 0x20
inc ebx
push 0x22
push 0
push ebx
call sub.MSVCRT.dll_memset
add esp, 0xc
cmp dword [ebp + 0x10], 0x73
je 0x4598e5
cmp dword [ebp + 0x10], 0x53
je 0x4598e5
mov dword [ebp + 0x10], 0x30
mov dword [ebp + 0xc], 0xa
mov eax, dword [ebp + 0x10]
push 8
mov ecx, eax
shr ecx, 3
cdq
lea edi, [ecx + ebx]
pop ecx
idiv ecx
mov al, 1
mov ecx, edx
shl al, cl
or byte [edi], al
inc dword [ebp + 0x10]
dec dword [ebp + 0xc]
jne 0x4598c2
jmp 0x4598ed
or byte [ebx + 4], 1
or byte [ebx + 1], 0x36
cmp byte [ebx - 1], 0
jle 0x459909
mov al, byte [ebx - 1]
movsx ecx, al
cmp byte [ecx + ebx - 1], 0
jne 0x459909
dec al
test al, al
mov byte [ebx - 1], al
jg 0x4598f3
mov cl, byte [ebx - 1]
cmp cl, 0x20
je 0x459933
xor edx, edx
lea eax, [ebx + 0x20]
mov dh, byte [ebx + 0x21]
mov dl, byte [eax]
lea edx, [edx*8 + 2]
push edx
push eax
movzx eax, cl
add eax, ebx
push eax
call dword [sym.imp.MSVCRT.dll_memmove]
add esp, 0xc
mov cl, byte [ebx - 1]
xor edx, edx
movzx eax, cl
mov dh, byte [eax + ebx + 1]
add eax, ebx
mov dl, byte [eax]
movsx eax, cl
add eax, ebx
lea eax, [eax + edx*8 + 2]
mov dword [ebp - 4], eax
jmp 0x45b023
mov eax, edi
sub eax, 0x77
je 0x459d6a
dec eax
je 0x459a1d
dec eax
dec eax
je 0x4599a3
push edi
call fcn.0045b7e2
pop ecx
mov dword [ebp + 0x10], eax
mov edi, dword [ebp - 0x18]
movzx eax, byte [ebp + 0x10]
mov ecx, dword [sym.ruby187g.exc_re_mbctab]
and dword [ebp - 0x38], 0
cmp byte [eax + ecx], 0
je 0x459a4d
mov eax, edi
mov dword [ebp - 0x38], 1
sub eax, dword [ebp + 8]
mov dword [ebp - 0x44], eax
jmp 0x459a4d
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x459a12
mov edi, 0x10000
mov ebx, dword [esi]
cmp ecx, edi
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x4599cb
mov dword [esi + 4], edi
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x4599f2
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x4599fa
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x459a05
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x4599b5
mov eax, dword [ebp - 4]
mov byte [eax], 5
jmp 0x459562
and dword [ebp - 0x38], 0
lea eax, [ebp - 0x50]
push eax
push 2
push ebx
call sym.ruby187g.exc_ruby_scan_hex
add esp, 0xc
cmp dword [ebp - 0x50], 0
mov dword [ebp + 0x10], eax
je 0x45b1a7
add ebx, dword [ebp - 0x50]
mov dword [ebp - 0x18], ebx
mov edi, dword [ebp - 0x18]
mov dword [ebp - 0x48], 1
movzx eax, byte [ebp + 0x10]
mov ecx, dword [sym.ruby187g.exc_re_mbctab]
mov edx, dword [ebp - 0x10]
mov dword [ebp + 0xc], eax
movzx eax, byte [eax + ecx]
add eax, edi
test edx, edx
je 0x459aa8
movsx ecx, byte [edx]
mov edi, dword [ebp - 4]
lea edx, [ecx + edx + 1]
cmp edx, edi
jne 0x459aab
mov edx, dword [ebp - 0x44]
neg edx
sbb edx, edx
add edx, 0x7f
cmp ecx, edx
jge 0x459aab
cmp eax, dword [ebp - 0x20]
jae 0x459b9c
mov al, byte [eax]
cmp al, 0x2b
je 0x459aab
cmp al, 0x3f
je 0x459aab
cmp al, 0x2a
je 0x459aab
cmp al, 0x5e
je 0x459aab
cmp al, 0x7b
jne 0x459b9c
jmp 0x459aab
mov edi, dword [ebp - 4]
mov ecx, dword [esi + 4]
mov eax, edi
sub eax, dword [esi]
mov dword [ebp - 8], edi
inc eax
cmp eax, ecx
jl 0x459b1a
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x459ad5
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x459afb
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459b03
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x459b0e
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
inc edx
cmp edx, ecx
jge 0x459aba
mov byte [edi], 1
mov ecx, dword [esi + 4]
inc edi
mov dword [ebp - 4], edi
mov dword [ebp - 0x10], edi
sub edi, dword [esi]
inc edi
cmp edi, ecx
jl 0x459b90
mov edi, 0x10000
mov ebx, dword [esi]
cmp ecx, edi
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x459b49
mov dword [esi + 4], edi
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x459b70
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459b78
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x459b83
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x459b33
mov eax, dword [ebp - 4]
and byte [eax], 0
inc dword [ebp - 4]
mov edi, dword [ebp - 4]
cmp dword [ebp - 0x48], 0
jne 0x459bab
cmp dword [ebp + 0x10], 0xff
jne 0x459c24
mov ecx, dword [esi + 4]
mov eax, edi
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x459c17
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x459bd2
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x459bf8
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459c00
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x459c0b
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
inc edx
cmp edx, ecx
jge 0x459bb7
mov eax, dword [ebp - 0x10]
or byte [edi], 0xff
inc edi
inc byte [eax]
and dword [ebp - 0x48], 0
mov ecx, dword [esi + 4]
mov eax, edi
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x459c90
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x459c4b
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x459c71
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459c79
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x459c84
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
inc edx
cmp edx, ecx
jge 0x459c30
mov al, byte [ebp + 0x10]
mov byte [edi], al
mov eax, dword [ebp - 0x10]
inc edi
inc byte [eax]
cmp dword [ebp - 0x38], 0
mov dword [ebp - 4], edi
je 0x45b023
mov eax, dword [sym.ruby187g.exc_re_mbctab]
mov ecx, dword [ebp + 0xc]
movzx eax, byte [ecx + eax]
mov ecx, eax
dec eax
test ecx, ecx
mov dword [ebp + 0xc], eax
je 0x45b023
mov edi, 0x10000
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x20]
je 0x45b26c
movzx ecx, byte [eax]
inc eax
mov dword [ebp + 0x10], ecx
mov ecx, dword [esi + 4]
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 4]
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x459d47
mov ebx, dword [esi]
cmp ecx, edi
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x459d00
mov dword [esi + 4], edi
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x459d27
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459d2f
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x459d3a
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x459cea
mov ecx, dword [ebp - 4]
mov al, byte [ebp + 0x10]
inc dword [ebp - 4]
mov byte [ecx], al
mov eax, dword [ebp - 0x10]
inc byte [eax]
mov eax, dword [ebp + 0xc]
dec dword [ebp + 0xc]
test eax, eax
jne 0x459cc7
jmp 0x45b023
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
mov dword [ebp - 8], eax
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x459ddc
mov edi, 0x10000
mov ebx, dword [esi]
cmp ecx, edi
je 0x45b2aa
add ecx, ecx
cmp ecx, edi
mov dword [esi + 4], ecx
jle 0x459d95
mov dword [esi + 4], edi
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x459dbc
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459dc4
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x459dcf
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x459d7f
mov eax, dword [ebp - 4]
mov byte [eax], 0x25
jmp 0x459562
cmp edi, dword [ebp - 0x20]
je 0x45b12b
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
add eax, 0x29
cmp eax, ecx
jle 0x459e63
mov ebx, dword [esi]
cmp ecx, edx
je 0x45b2aa
add ecx, ecx
cmp ecx, edx
mov dword [esi + 4], ecx
jle 0x459e15
mov dword [esi + 4], edx
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x459e3c
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459e44
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x459e4f
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
add edx, 0x29
cmp edx, ecx
mov edx, 0x10000
jg 0x459dff
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 4]
mov dword [ebp - 8], eax
cmp byte [ecx], 0x5e
mov ecx, dword [esi + 4]
jne 0x459eeb
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x459edf
jmp 0x459e82
mov edx, 0x10000
mov ebx, dword [esi]
cmp ecx, edx
je 0x45b2aa
add ecx, ecx
cmp ecx, edx
mov dword [esi + 4], ecx
jle 0x459e98
mov dword [esi + 4], edx
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x459ebf
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459ec7
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x459ed2
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x459e7d
mov edi, dword [ebp - 4]
mov byte [edi], 0x18
inc edi
inc dword [ebp - 0x18]
jmp 0x459f5d
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x459f56
jmp 0x459ef9
mov edx, 0x10000
mov ebx, dword [esi]
cmp ecx, edx
je 0x45b2aa
add ecx, ecx
cmp ecx, edx
mov dword [esi + 4], ecx
jle 0x459f0f
mov dword [esi + 4], edx
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x459f36
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459f3e
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x459f49
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x459ef4
mov edi, dword [ebp - 4]
mov byte [edi], 0x17
inc edi
mov eax, dword [ebp - 0x18]
mov ecx, dword [esi + 4]
mov dword [ebp - 0x4c], eax
mov eax, edi
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x459fcf
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x459f8a
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x459fb0
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x459fb8
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x459fc3
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
inc edx
cmp edx, ecx
jge 0x459f6f
mov byte [edi], 0x20
xor ebx, ebx
inc edi
push 0x22
push ebx
push edi
mov dword [ebp - 4], edi
call sub.MSVCRT.dll_memset
add esp, 0xc
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x48], ebx
mov dword [ebp - 0x34], ebx
mov eax, dword [ebp - 4]
or dword [ebp + 0xc], 0xffffffff
xor ecx, ecx
mov ch, byte [eax + 0x21]
mov cl, byte [eax + 0x20]
mov eax, ecx
test eax, eax
jne 0x45a00a
cmp dword [0x499e58], ecx
je 0x45a07f
mov ecx, dword [esi + 4]
lea edi, [eax*8 + 0x2a]
mov eax, ecx
add eax, dword [esi]
mov edx, dword [ebp - 4]
lea edx, [edi + edx + 1]
cmp edx, eax
jbe 0x45a07f
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x45a03e
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x45a065
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x45a06d
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45a078
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
add eax, ecx
jmp 0x45a018
cmp dword [ebp - 0x68], 0
je 0x45a08f
cmp dword [ebp - 0x34], 0
jne 0x45b14a
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x20]
je 0x45b26c
mov ecx, eax
movzx ebx, byte [ecx]
inc ecx
cmp ebx, 0x5d
mov dword [ebp + 0x10], ebx
mov dword [ebp - 0x18], ecx
jne 0x45a0cf
mov eax, dword [ebp - 0x4c]
inc eax
cmp ecx, eax
jne 0x45abc1
cmp ecx, dword [ebp - 0x20]
je 0x45b169
push str.character_class_has____without_escape
call sym.ruby187g.exc_rb_warn
pop ecx
mov ecx, dword [ebp - 0x18]
cmp dword [ebp - 0x34], 0
je 0x45a0e3
cmp ebx, 0x2d
jne 0x45a0e3
cmp byte [ecx], 0x5d
jne 0x45b188
mov edx, dword [sym.ruby187g.exc_re_mbctab]
movzx eax, bl
mov al, byte [eax + edx]
test al, al
je 0x45a157
movzx eax, al
add ecx, eax
cmp ecx, dword [ebp - 0x20]
jae 0x45b26c
cmp dword [0x499e58], 3
jne 0x45a13d
push 6
pop ecx
push 1
sub ecx, eax
pop edx
shl edx, cl
mov ecx, eax
dec edx
and ebx, edx
dec eax
test ecx, ecx
mov dword [ebp + 0x10], ebx
je 0x45a14e
inc eax
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp + 0x10]
shl edx, 6
mov cl, byte [ecx]
and ecx, 0x3f
or ecx, edx
inc dword [ebp - 0x18]
dec eax
mov dword [ebp + 0x10], ecx
jne 0x45a122
jmp 0x45a14e
mov eax, dword [ebp - 0x18]
shl ebx, 8
movzx eax, byte [eax]
or ebx, eax
inc dword [ebp - 0x18]
mov dword [ebp + 0x10], ebx
inc dword [ebp - 0x38]
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp + 0x10]
and dword [ebp - 0x34], 0
cmp ebx, 0x2d
jne 0x45a190
mov eax, dword [ebp - 0x4c]
inc eax
cmp ecx, eax
je 0x45a16d
cmp byte [ecx], 0x5d
jne 0x45a182
cmp byte [ecx], 0x2d
jne 0x45a178
cmp byte [ecx + 1], 0x5d
jne 0x45a182
cmp dword [ebp - 0x68], 0
je 0x45a3d2
push 0x488f0c
call sym.ruby187g.exc_rb_warn
pop ecx
mov ecx, dword [ebp - 0x18]
cmp ebx, 0x5b
jne 0x45a1ac
cmp byte [ecx], 0x3a
je 0x45a340
push 0x488ee4
call sym.ruby187g.exc_rb_warn
pop ecx
mov ecx, dword [ebp - 0x18]
cmp ebx, 0x5c
jne 0x45a32b
cmp ecx, dword [ebp - 0x20]
je 0x45b26c
mov eax, dword [ebp - 0x18]
inc dword [ebp - 0x18]
movzx eax, byte [eax]
cmp eax, 0x57
ja 0x45a223
je 0x45a4cb
cmp eax, 0x30
jb 0x45a24e
cmp eax, 0x39
jbe 0x45a202
cmp eax, 0x43
je 0x45a301
cmp eax, 0x44
je 0x45a46c
cmp eax, 0x4d
je 0x45a301
cmp eax, 0x53
je 0x45a40d
jmp 0x45a24e
mov edi, dword [ebp - 0x18]
lea eax, [ebp - 0x50]
dec edi
push eax
push 3
push edi
call sym.ruby187g.exc_ruby_scan_oct
add esp, 0xc
add edi, dword [ebp - 0x50]
mov dword [ebp + 0x10], eax
mov dword [ebp - 0x18], edi
jmp 0x45a2f5
mov ecx, eax
sub ecx, 0x63
je 0x45a301
dec ecx
je 0x45a5f0
sub ecx, 0xf
je 0x45a591
sub ecx, 4
je 0x45a526
dec ecx
je 0x45a2d3
push eax
call fcn.0045b7e2
mov dword [ebp + 0x10], eax
pop ecx
mov ecx, dword [sym.ruby187g.exc_re_mbctab]
movzx eax, al
mov al, byte [eax + ecx]
test al, al
je 0x45a3c5
mov ecx, dword [ebp - 0x18]
movzx eax, al
add ecx, eax
cmp ecx, dword [ebp - 0x20]
jae 0x45b26c
cmp dword [0x499e58], 3
jne 0x45a2b7
push 6
pop ecx
push 1
sub ecx, eax
pop edx
shl edx, cl
mov ecx, eax
dec edx
and dword [ebp + 0x10], edx
dec eax
test ecx, ecx
je 0x45a2cb
inc eax
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp + 0x10]
shl edx, 6
mov cl, byte [ecx]
and ecx, 0x3f
or ecx, edx
inc dword [ebp - 0x18]
dec eax
mov dword [ebp + 0x10], ecx
jne 0x45a29c
jmp 0x45a2cb
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp + 0x10]
shl eax, 8
movzx ecx, byte [ecx]
or eax, ecx
inc dword [ebp - 0x18]
mov dword [ebp + 0x10], eax
inc dword [ebp - 0x38]
jmp 0x45a3c5
lea eax, [ebp - 0x50]
push eax
push 2
push dword [ebp - 0x18]
call sym.ruby187g.exc_ruby_scan_hex
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x50]
add esp, 0xc
test eax, eax
je 0x45b1a7
add dword [ebp - 0x18], eax
mov dword [ebp - 0x48], 1
jmp 0x45a3c5
lea eax, [ebp - 0x74]
push eax
mov eax, dword [ebp - 0x18]
push dword [ebp - 0x20]
dec eax
push eax
call fcn.0045b82e
add esp, 0xc
cmp eax, 0xff
mov dword [ebp + 0x10], eax
ja 0x45b1a7
mov eax, dword [ebp - 0x74]
mov dword [ebp - 0x18], eax
jmp 0x45a2f5
cmp ebx, 0x5b
jne 0x45a3c5
mov ecx, dword [ebp - 0x18]
cmp byte [ecx], 0x3a
jne 0x45a3c5
mov eax, dword [ebp - 0x20]
cmp dword [ebp - 0x18], eax
je 0x45b26c
mov edx, dword [ebp - 0x18]
xor eax, eax
inc edx
mov dword [ebp - 0x44], eax
cmp edx, dword [ebp - 0x20]
je 0x45b1c6
movzx ecx, byte [edx]
inc edx
cmp ecx, 0x3a
mov dword [ebp - 0x18], edx
je 0x45a383
cmp ecx, 0x5d
je 0x45a383
cmp edx, dword [ebp - 0x20]
je 0x45a383
cmp eax, 6
je 0x45a383
mov byte [ebp + eax - 0x40], cl
inc eax
mov dword [ebp - 0x44], eax
jmp 0x45a35e
and byte [ebp + eax - 0x40], 0
cmp ecx, 0x3a
jne 0x45a396
cmp byte [edx], 0x5d
je 0x45a622
inc eax
inc eax
mov ecx, eax
dec eax
test ecx, ecx
mov dword [ebp - 0x44], eax
je 0x45a3b3
lea ecx, [eax + 1]
sub edx, ecx
mov dword [ebp - 0x18], edx
dec ecx
dec eax
test ecx, ecx
ja 0x45a3aa
mov dword [ebp - 0x44], eax
push 0x488ee4
call sym.ruby187g.exc_rb_warn
pop ecx
mov dword [ebp + 0x10], 0x5b
cmp dword [ebp - 0x68], 0
jne 0x45aabd
mov ebx, dword [ebp + 0x10]
mov ecx, dword [ebp - 0x18]
cmp byte [ecx], 0x2d
jne 0x45ab53
cmp byte [ecx + 1], 0x5d
lea eax, [ecx + 1]
je 0x45ab53
cmp ecx, dword [ebp - 0x20]
mov dword [ebp + 0xc], ebx
je 0x45b26c
mov dword [ebp - 0x44], 0x2d
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x68], 1
jmp 0x45a07f
and dword [ebp + 0x10], 0
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x45a42a
push 8
push dword [ebp + 0x10]
call dword [sym.imp.MSVCRT.dll__isctype]
pop ecx
pop ecx
jmp 0x45a43a
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov ecx, dword [ebp + 0x10]
mov eax, dword [eax]
mov al, byte [eax + ecx*2]
and eax, 8
test eax, eax
jne 0x45a45b
movzx eax, byte [ebp + 0x10]
mov edx, dword [ebp - 4]
mov ecx, eax
shr ecx, 3
push 8
lea ebx, [ecx + edx]
pop ecx
cdq
idiv ecx
mov al, 1
mov ecx, edx
shl al, cl
or byte [ebx], al
inc dword [ebp + 0x10]
cmp dword [ebp + 0x10], 0x100
jb 0x45a411
jmp 0x45a56d
and dword [ebp + 0x10], 0
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x45a489
push 4
push dword [ebp + 0x10]
call dword [sym.imp.MSVCRT.dll__isctype]
pop ecx
pop ecx
jmp 0x45a499
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov ecx, dword [ebp + 0x10]
mov eax, dword [eax]
mov al, byte [eax + ecx*2]
and eax, 4
test eax, eax
jne 0x45a4ba
movzx eax, byte [ebp + 0x10]
mov edx, dword [ebp - 4]
mov ecx, eax
shr ecx, 3
push 8
lea ebx, [ecx + edx]
pop ecx
cdq
idiv ecx
mov al, 1
mov ecx, edx
shl al, cl
or byte [ebx], al
inc dword [ebp + 0x10]
cmp dword [ebp + 0x10], 0x100
jb 0x45a470
jmp 0x45a56d
xor eax, eax
mov dword [ebp + 0x10], eax
mov cl, byte [eax + 0x499c88]
cmp cl, 1
je 0x45a516
cmp dword [0x499e58], 0
je 0x45a4f2
mov ecx, dword [sym.ruby187g.exc_re_mbctab]
cmp byte [ecx + eax], 0
je 0x45a4f7
jmp 0x45a516
cmp cl, 2
je 0x45a516
mov edx, dword [ebp - 4]
push 8
movzx eax, al
mov ecx, eax
shr ecx, 3
lea ebx, [ecx + edx]
pop ecx
cdq
idiv ecx
mov al, 1
mov ecx, edx
shl al, cl
or byte [ebx], al
mov eax, dword [ebp + 0x10]
inc eax
cmp eax, 0x100
mov dword [ebp + 0x10], eax
jb 0x45a4d0
jmp 0x45aab1
and dword [ebp + 0x10], 0
mov eax, dword [ebp + 0x10]
mov al, byte [eax + 0x499c88]
cmp al, 1
je 0x45a544
cmp dword [0x499e58], 0
jne 0x45a561
cmp al, 2
jne 0x45a561
movzx eax, byte [ebp + 0x10]
mov edx, dword [ebp - 4]
mov ecx, eax
shr ecx, 3
push 8
lea ebx, [ecx + edx]
pop ecx
cdq
idiv ecx
mov al, 1
mov ecx, edx
shl al, cl
or byte [ebx], al
inc dword [ebp + 0x10]
cmp dword [ebp + 0x10], 0x100
jb 0x45a52a
cmp dword [0x499e58], 0
je 0x45aab1
push dword [ebp - 4]
push 0xffffffffffffffff
push 0x80
call fcn.0045b50b
add esp, 0xc
jmp 0x45aab1
and dword [ebp + 0x10], 0
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x45a5ae
push 8
push dword [ebp + 0x10]
call dword [sym.imp.MSVCRT.dll__isctype]
pop ecx
pop ecx
jmp 0x45a5be
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov ecx, dword [ebp + 0x10]
mov eax, dword [eax]
mov al, byte [eax + ecx*2]
and eax, 8
test eax, eax
je 0x45a5df
movzx eax, byte [ebp + 0x10]
mov edx, dword [ebp - 4]
mov ecx, eax
shr ecx, 3
push 8
lea ebx, [ecx + edx]
pop ecx
cdq
idiv ecx
mov al, 1
mov ecx, edx
shl al, cl
or byte [ebx], al
inc dword [ebp + 0x10]
cmp dword [ebp + 0x10], 0x100
jb 0x45a595
jmp 0x45aab1
mov dword [ebp + 0x10], 0x30
movzx eax, byte [ebp + 0x10]
mov edx, dword [ebp - 4]
mov ecx, eax
shr ecx, 3
push 8
lea ebx, [ecx + edx]
pop ecx
cdq
idiv ecx
mov al, 1
mov ecx, edx
shl al, cl
or byte [ebx], al
inc dword [ebp + 0x10]
cmp dword [ebp + 0x10], 0x39
jbe 0x45a5f7
jmp 0x45aab1
lea eax, [ebp - 0x40]
push str.alnum
push eax
call sub.MSVCRT.dll_strcmp
neg eax
sbb al, al
mov edi, str.alpha
inc al
push edi
mov byte [ebp + 0x13], al
lea eax, [ebp - 0x40]
push eax
call sub.MSVCRT.dll_strcmp
neg eax
sbb al, al
push str.blank
inc al
mov byte [ebp + 0xf], al
lea eax, [ebp - 0x40]
push eax
call sub.MSVCRT.dll_strcmp
neg eax
sbb al, al
push str.cntrl
inc al
mov byte [ebp - 0x29], al
lea eax, [ebp - 0x40]
push eax
call sub.MSVCRT.dll_strcmp
neg eax
sbb al, al
push str.digit
inc al
mov byte [ebp - 0x5d], al
lea eax, [ebp - 0x40]
push eax
call sub.MSVCRT.dll_strcmp
neg eax
sbb al, al
push str.graph
inc al
mov byte [ebp - 0x58], al
lea eax, [ebp - 0x40]
push eax
call sub.MSVCRT.dll_strcmp
neg eax
sbb al, al
push str.lower
inc al
mov byte [ebp - 0x56], al
lea eax, [ebp - 0x40]
push eax
call sub.MSVCRT.dll_strcmp
neg eax
sbb al, al
push 0x4848bc
inc al
mov byte [ebp - 0x59], al
lea eax, [ebp - 0x40]
push eax
call sub.MSVCRT.dll_strcmp
add esp, 0x40
neg eax
sbb al, al
push str.punct
inc al
mov byte [ebp - 0x55], al
lea eax, [ebp - 0x40]
push eax
call sub.MSVCRT.dll_strcmp
neg eax
sbb al, al
push str.space
inc al
mov byte [ebp - 0x5b], al
lea eax, [ebp - 0x40]
push eax
call sub.MSVCRT.dll_strcmp
neg eax
sbb al, al
inc al
mov byte [ebp - 0x57], al
mov ebx, str.upper
lea eax, [ebp - 0x40]
push ebx
push eax
call sub.MSVCRT.dll_strcmp
neg eax
sbb al, al
push str.xdigit
inc al
mov byte [ebp - 0x5a], al
lea eax, [ebp - 0x40]
push eax
call sub.MSVCRT.dll_strcmp
neg eax
sbb al, al
push edi
inc al
mov byte [ebp - 0x5c], al
lea eax, [ebp - 0x40]
push eax
call sub.MSVCRT.dll_strcmp
add esp, 0x28
test eax, eax
je 0x45a83c
lea eax, [ebp - 0x40]
push ebx
push eax
call sub.MSVCRT.dll_strcmp
pop ecx
test eax, eax
pop ecx
je 0x45a83c
lea eax, [ebp - 0x40]
push str.lower
push eax
call sub.MSVCRT.dll_strcmp
pop ecx
test eax, eax
pop ecx
je 0x45a83c
lea eax, [ebp - 0x40]
push str.digit
push eax
call sub.MSVCRT.dll_strcmp
pop ecx
test eax, eax
pop ecx
je 0x45a83c
lea eax, [ebp - 0x40]
push str.alnum
push eax
call sub.MSVCRT.dll_strcmp
pop ecx
test eax, eax
pop ecx
je 0x45a83c
lea eax, [ebp - 0x40]
push str.xdigit
push eax
call sub.MSVCRT.dll_strcmp
pop ecx
test eax, eax
pop ecx
je 0x45a83c
lea eax, [ebp - 0x40]
push str.space
push eax
call sub.MSVCRT.dll_strcmp
pop ecx
test eax, eax
pop ecx
je 0x45a83c
lea eax, [ebp - 0x40]
push 0x4848bc
push eax
call sub.MSVCRT.dll_strcmp
pop ecx
test eax, eax
pop ecx
je 0x45a83c
lea eax, [ebp - 0x40]
push str.punct
push eax
call sub.MSVCRT.dll_strcmp
pop ecx
test eax, eax
pop ecx
je 0x45a83c
lea eax, [ebp - 0x40]
push str.graph
push eax
call sub.MSVCRT.dll_strcmp
pop ecx
test eax, eax
pop ecx
je 0x45a83c
lea eax, [ebp - 0x40]
push str.cntrl
push eax
call sub.MSVCRT.dll_strcmp
pop ecx
test eax, eax
pop ecx
je 0x45a83c
lea eax, [ebp - 0x40]
push str.blank
push eax
call sub.MSVCRT.dll_strcmp
pop ecx
test eax, eax
pop ecx
jne 0x45b1e5
mov eax, dword [ebp - 0x20]
cmp dword [ebp - 0x18], eax
je 0x45b26c
inc dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
cmp eax, dword [ebp - 0x20]
je 0x45b1f3
mov edi, dword [sym.imp.MSVCRT.dll__isctype]
xor ebx, ebx
cmp byte [ebp + 0x13], 0
je 0x45a893
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x45a87b
push 0x107
push ebx
call edi
pop ecx
pop ecx
jmp 0x45a88b
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov eax, dword [eax]
mov ax, word [eax + ebx*2]
and eax, 0x107
test eax, eax
jne 0x45aa82
cmp byte [ebp + 0xf], 0
je 0x45a8c7
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x45a8af
push 0x103
push ebx
call edi
pop ecx
pop ecx
jmp 0x45a8bf
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov eax, dword [eax]
mov ax, word [eax + ebx*2]
and eax, 0x103
test eax, eax
jne 0x45aa82
cmp byte [ebp - 0x29], 0
je 0x45a8df
cmp ebx, 0x20
je 0x45aa82
cmp ebx, 9
je 0x45aa82
cmp byte [ebp - 0x5d], 0
je 0x45a90d
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x45a8f8
push 0x20
push ebx
call edi
pop ecx
pop ecx
jmp 0x45a905
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov eax, dword [eax]
mov al, byte [eax + ebx*2]
and eax, 0x20
test eax, eax
jne 0x45aa82
cmp byte [ebp - 0x58], 0
je 0x45a93b
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x45a926
push 4
push ebx
call edi
pop ecx
pop ecx
jmp 0x45a933
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov eax, dword [eax]
mov al, byte [eax + ebx*2]
and eax, 4
test eax, eax
jne 0x45aa82
cmp byte [ebp - 0x56], 0
je 0x45a96f
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x45a957
push 0x117
push ebx
call edi
pop ecx
pop ecx
jmp 0x45a967
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov eax, dword [eax]
mov ax, word [eax + ebx*2]
and eax, 0x117
test eax, eax
jne 0x45aa82
cmp byte [ebp - 0x59], 0
je 0x45a99d
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x45a988
push 2
push ebx
call edi
pop ecx
pop ecx
jmp 0x45a995
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov eax, dword [eax]
mov al, byte [eax + ebx*2]
and eax, 2
test eax, eax
jne 0x45aa82
cmp byte [ebp - 0x55], 0
je 0x45a9d1
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x45a9b9
push 0x157
push ebx
call edi
pop ecx
pop ecx
jmp 0x45a9c9
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov eax, dword [eax]
mov ax, word [eax + ebx*2]
and eax, 0x157
test eax, eax
jne 0x45aa82
cmp byte [ebp - 0x5b], 0
je 0x45a9ff
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x45a9ea
push 0x10
push ebx
call edi
pop ecx
pop ecx
jmp 0x45a9f7
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov eax, dword [eax]
mov al, byte [eax + ebx*2]
and eax, 0x10
test eax, eax
jne 0x45aa82
cmp byte [ebp - 0x57], 0
je 0x45aa29
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x45aa18
push 8
push ebx
call edi
pop ecx
pop ecx
jmp 0x45aa25
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov eax, dword [eax]
mov al, byte [eax + ebx*2]
and eax, 8
test eax, eax
jne 0x45aa82
cmp byte [ebp - 0x5a], 0
je 0x45aa53
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x45aa42
push 1
push ebx
call edi
pop ecx
pop ecx
jmp 0x45aa4f
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov eax, dword [eax]
mov al, byte [eax + ebx*2]
and eax, 1
test eax, eax
jne 0x45aa82
cmp byte [ebp - 0x5c], 0
je 0x45aaa4
mov eax, dword [sym.imp.MSVCRT.dll___mb_cur_max]
cmp dword [eax], 1
jle 0x45aa6f
push 0x80
push ebx
call edi
pop ecx
pop ecx
jmp 0x45aa7e
mov eax, dword [sym.imp.MSVCRT.dll__pctype]
mov eax, dword [eax]
mov al, byte [eax + ebx*2]
and eax, 0x80
test eax, eax
je 0x45aaa4
mov edx, dword [ebp - 4]
push 8
movzx eax, bl
mov ecx, eax
shr ecx, 3
lea edi, [ecx + edx]
pop ecx
cdq
idiv ecx
mov al, 1
mov ecx, edx
shl al, cl
or byte [edi], al
mov edi, dword [sym.imp.MSVCRT.dll__isctype]
inc ebx
cmp ebx, 0x100
jl 0x45a85f
mov dword [ebp - 0x34], 1
jmp 0x459fed
mov eax, dword [ebp + 0x10]
cmp dword [ebp + 0xc], eax
ja 0x45b212
xor ecx, ecx
cmp dword [ebp - 0x38], ecx
mov dword [ebp - 0x68], ecx
jne 0x45ab40
cmp dword [ebp - 0x24], ecx
je 0x45ab16
cmp dword [0x499e54], ecx
je 0x45ab16
mov eax, dword [ebp + 0xc]
mov ecx, dword [0x499e54]
mov edx, dword [ebp - 4]
push 8
movzx eax, byte [eax + ecx]
mov ecx, eax
shr ecx, 3
lea ebx, [ecx + edx]
pop ecx
cdq
idiv ecx
mov al, 1
mov ecx, edx
shl al, cl
or byte [ebx], al
inc dword [ebp + 0xc]
mov eax, dword [ebp + 0xc]
cmp eax, dword [ebp + 0x10]
jbe 0x45aae0
jmp 0x45abb8
movzx eax, byte [ebp + 0xc]
mov edx, dword [ebp - 4]
mov ecx, eax
shr ecx, 3
push 8
lea ebx, [ecx + edx]
pop ecx
cdq
idiv ecx
mov al, 1
mov ecx, edx
shl al, cl
or byte [ebx], al
inc dword [ebp + 0xc]
mov eax, dword [ebp + 0xc]
cmp eax, dword [ebp + 0x10]
jbe 0x45ab16
jmp 0x45abb8
cmp dword [ebp - 0x38], 2
jne 0x45b212
push dword [ebp - 4]
push eax
push dword [ebp + 0xc]
jmp 0x45abb0
xor ecx, ecx
cmp dword [ebp - 0x24], ecx
je 0x45ab72
mov eax, dword [0x499e54]
cmp eax, ecx
je 0x45ab72
cmp ebx, 0x100
jae 0x45ab72
movzx eax, byte [eax + ebx]
mov dword [ebp + 0x10], eax
cmp dword [ebp - 0x38], ecx
jne 0x45aba7
cmp dword [0x499e58], ecx
je 0x45ab84
cmp dword [ebp - 0x48], ecx
jne 0x45aba7
movzx eax, byte [ebp + 0x10]
mov edx, dword [ebp - 4]
mov ecx, eax
shr ecx, 3
push 8
lea ebx, [ecx + edx]
pop ecx
cdq
idiv ecx
mov al, 1
mov ecx, edx
shl al, cl
or byte [ebx], al
and dword [ebp - 0x48], 0
jmp 0x45abb8
push dword [ebp - 4]
push dword [ebp + 0x10]
push dword [ebp + 0x10]
call fcn.0045b50b
add esp, 0xc
and dword [ebp - 0x38], 0
jmp 0x459fed
mov eax, dword [ebp - 4]
cmp byte [eax - 1], 0
jle 0x45abe2
mov ecx, eax
mov al, byte [ecx - 1]
movsx edx, al
cmp byte [edx + ecx - 1], 0
jne 0x45abe2
dec al
test al, al
mov byte [ecx - 1], al
jg 0x45abcc
mov ebx, dword [ebp - 4]
mov cl, byte [ebx - 1]
cmp cl, 0x20
je 0x45ac0f
xor edx, edx
lea eax, [ebx + 0x20]
mov dh, byte [ebx + 0x21]
mov dl, byte [eax]
lea edx, [edx*8 + 2]
push edx
push eax
movzx eax, cl
add eax, ebx
push eax
call dword [sym.imp.MSVCRT.dll_memmove]
add esp, 0xc
mov cl, byte [ebx - 1]
xor edx, edx
movzx eax, cl
mov dh, byte [eax + ebx + 1]
add eax, ebx
mov dl, byte [eax]
movsx eax, cl
add eax, ebx
and dword [ebp - 0x48], 0
lea eax, [eax + edx*8 + 2]
mov dword [ebp - 4], eax
jmp 0x45b023
cmp dword [ebp - 8], 0
je 0x45b231
cmp dword [ebp + 0x10], 0x2b
setne byte [ebp - 0x29]
cmp dword [ebp + 0x10], 0x3f
mov byte [ebp + 0x13], 1
setne byte [ebp + 0xf]
cmp edi, dword [ebp - 0x20]
je 0x45ac87
movzx eax, byte [edi]
inc edi
test ebx, ebx
mov dword [ebp - 0x18], edi
je 0x45ac6a
test ecx, ecx
je 0x45ac6a
movzx eax, byte [ecx + eax]
cmp eax, 0x2a
jb 0x45ac83
cmp eax, 0x2b
jbe 0x45b28b
cmp eax, 0x3f
jne 0x45ac83
and byte [ebp + 0x13], 0
jmp 0x45ac87
dec edi
mov dword [ebp - 0x18], edi
cmp byte [ebp + 0x13], 0
je 0x45ad4b
cmp byte [ebp + 0xf], 0
je 0x45adf3
mov edi, dword [ebp - 8]
cmp byte [edi], 0x15
jne 0x45ad4e
mov eax, dword [ebp - 4]
sub eax, edi
cmp eax, 2
jg 0x45ad4e
mov eax, dword [ebp - 4]
dec eax
cmp byte [eax], 0x1c
jne 0x45acc1
mov dword [ebp - 4], eax
cmp byte [ebp - 0x29], 0
je 0x45accf
mov byte [edi], 0x16
jmp 0x45b023
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x45ad40
jmp 0x45ace3
mov edx, 0x10000
mov ebx, dword [esi]
cmp ecx, edx
je 0x45b2aa
add ecx, ecx
cmp ecx, edx
mov dword [esi + 4], ecx
jle 0x45acf9
mov dword [esi + 4], edx
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x45ad20
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x45ad28
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45ad33
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
inc edx
cmp edx, ecx
jge 0x45acde
mov eax, dword [ebp - 4]
mov byte [eax], 0x16
jmp 0x459562
mov edi, dword [ebp - 8]
cmp byte [ebp + 0xf], 0
je 0x45adf3
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
add eax, 3
cmp eax, ecx
jl 0x45adce
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x45ad82
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x45ada9
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x45adb1
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45adbc
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
add edx, 3
cmp edx, ecx
jge 0x45ad67
mov edi, dword [ebp - 8]
mov al, byte [ebp + 0x13]
add edi, 0xfffffffd
neg al
sbb eax, eax
push edi
and al, 0xfa
add eax, 0x12
push eax
push dword [ebp - 4]
call fcn.0045b939
add esp, 0xc
add dword [ebp - 4], 3
mov edx, 0x10000
mov eax, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub eax, dword [esi]
add eax, 3
cmp eax, ecx
jl 0x45ae68
jmp 0x45ae09
mov edx, 0x10000
mov ebx, dword [esi]
cmp ecx, edx
je 0x45b2aa
add ecx, ecx
cmp ecx, edx
mov dword [esi + 4], ecx
jle 0x45ae1f
mov dword [esi + 4], edx
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add dword [ebp - 4], ecx
cmp dword [ebp - 0xc], edx
je 0x45ae46
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x45ae4e
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45ae59
add dword [ebp - 0x10], ecx
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
sub edx, eax
add edx, 3
cmp edx, ecx
jge 0x45ae04
mov eax, dword [ebp - 4]
push eax
lea ebx, [eax + 3]
push ebx
push dword [ebp - 8]
push 0xa
call fcn.0045b95d
add esp, 0x10
cmp byte [ebp - 0x29], 0
mov edi, ebx
mov dword [ebp - 4], edi
je 0x45af20
cmp byte [ebp + 0x13], 0
jne 0x45b023
mov ecx, dword [esi + 4]
mov eax, edi
sub eax, dword [esi]
add eax, 3
cmp eax, ecx
jl 0x45af06
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x45aebf
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x45aee5
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x45aeed
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45aef8
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
add edx, 3
cmp edx, ecx
jge 0x45aea4
lea ebx, [edi + 3]
push edi
push ebx
push dword [ebp - 8]
push 0x11
call fcn.0045b95d
add esp, 0x10
mov dword [ebp - 4], ebx
jmp 0x45b023
mov ecx, dword [esi + 4]
mov eax, edi
sub eax, dword [esi]
add eax, 3
cmp eax, ecx
jl 0x45af90
mov ebx, dword [esi]
mov eax, 0x10000
cmp ecx, eax
je 0x45b2aa
add ecx, ecx
cmp ecx, eax
mov dword [esi + 4], ecx
jle 0x45af49
mov dword [esi + 4], eax
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
pop ecx
mov dword [esi], eax
test eax, eax
pop ecx
je 0x45b2c9
mov ecx, eax
xor edx, edx
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x45af6f
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x45af77
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45af82
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
add edx, 3
cmp edx, ecx
jge 0x45af2e
mov eax, dword [ebp - 8]
push edi
lea ecx, [eax + 6]
push ecx
push eax
push 0xd
call fcn.0045b95d
add esp, 0x10
add edi, 3
jmp 0x45b020
mov edi, dword [ebp - 4]
mov ecx, dword [esi + 4]
mov eax, edi
mov dword [ebp - 8], edi
sub eax, dword [esi]
inc eax
cmp eax, ecx
jl 0x45b01c
jmp 0x45afc1
mov edx, 0x10000
mov ebx, dword [esi]
cmp ecx, edx
je 0x45b2aa
add ecx, ecx
cmp ecx, edx
mov dword [esi + 4], ecx
jle 0x45afd7
mov dword [esi + 4], edx
push dword [esi + 4]
push ebx
call dword [sym.imp.MSVCRT.dll_realloc]
xor edx, edx
pop ecx
cmp eax, edx
pop ecx
mov dword [esi], eax
je 0x45b2c9
mov ecx, eax
sub ecx, ebx
add edi, ecx
cmp dword [ebp - 0xc], edx
je 0x45affd
add dword [ebp - 0xc], ecx
cmp dword [ebp - 8], edx
je 0x45b005
add dword [ebp - 8], ecx
add dword [ebp - 0x14], ecx
cmp dword [ebp - 0x10], edx
je 0x45b010
add dword [ebp - 0x10], ecx
mov ecx, dword [esi + 4]
mov edx, edi
sub edx, eax
inc edx
cmp edx, ecx
jge 0x45afbc
mov byte [edi], 0x15
inc edi
mov dword [ebp - 4], edi
mov eax, dword [ebp - 0x20]
cmp dword [ebp - 0x18], eax
je 0x45b2e8
jmp 0x457183
lea ecx, [ebp - 0x114]
cmp eax, ecx
je 0x45b046
push eax
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.unmatched__
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b065
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.undefined___...__sequence
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b084
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.undefined___...__inline_option
jmp 0x45b45a
sub edi, dword [ebp + 8]
push edi
push str.invalid_regular_expression__theres_no_previous_pattern__to_which__would_define_cardinality_at__d
mov esi, 0x499d88
push 0xc8
push esi
call sym.ruby187g.exc_rb_w32_snprintf
add esp, 0x10
jmp 0x45b250
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b0c4
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.invalid_regular_expression___cant_be_last_character
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b0e3
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.cant_do_n_m_with_n___m
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b102
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.too_big_quantifier_in__
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b121
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, 0x488d34
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b140
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.invalid_regular_expression____cant_be_the_last_character_ie._cant_start_range_at_the_end_of_pattern
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b15f
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.invalid_regular_expression__cant_use_character_class_as_an_end_value_of_range
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b17e
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.invalid_regular_expression__empty_character_class
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b19d
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.invalid_regular_expression__cant_use_character_class_as_a_start_value_of_range
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b1bc
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.Invalid_escape_character_syntax
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b1db
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.invalid_regular_expression__re_cant_end___:
jmp 0x45b45a
lea eax, [ebp - 0x40]
push eax
push str.invalid_regular_expression___:_s:__is_not_a_character_class
jmp 0x45b097
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b208
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.invalid_regular_expression__range_doesnt_have_ending___after_a_character_class
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b227
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.invalid_regular_expression
jmp 0x45b45a
sub edi, dword [ebp + 8]
mov esi, 0x499d88
push edi
push dword [ebp + 0x10]
push str.invalid_regular_expression__theres_no_previous_pattern__to_which__c_would_define_cardinality_at__d
push 0xc8
push esi
call sym.ruby187g.exc_rb_w32_snprintf
add esp, 0x14
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b265
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, esi
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b281
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.premature_end_of_regular_expression
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b2a0
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.nested___in_regexp
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b2bf
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.regular_expression_too_big
jmp 0x45b45a
lea eax, [ebp - 0x114]
cmp dword [ebp - 0x1c], eax
je 0x45b2de
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, str.memory_exhausted
jmp 0x45b45a
cmp dword [ebp - 0xc], 0
je 0x45b2fe
push dword [ebp - 4]
push 8
push dword [ebp - 0xc]
call fcn.0045b939
add esp, 0xc
mov eax, dword [ebp - 0x1c]
cmp dword [ebp - 0x30], eax
je 0x45b322
lea ecx, [ebp - 0x114]
cmp eax, ecx
je 0x45b318
push eax
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
mov eax, 0x488a50
jmp 0x45b45a
mov edx, dword [esi]
mov edi, dword [ebp - 4]
mov eax, edx
cmp eax, edi
je 0x45b345
mov cl, byte [eax]
cmp cl, 0xd
je 0x45b339
cmp cl, 0x11
jne 0x45b33c
add eax, 3
cmp byte [eax], 0x16
jne 0x45b345
or dword [esi + 0x18], 0x40
mov eax, edi
sub eax, edx
mov dword [esi + 8], eax
mov eax, dword [ebp - 0x54]
mov dword [esi + 0x1c], eax
mov eax, edx
cmp eax, edi
je 0x45b36d
cmp byte [eax], 0x19
jne 0x45b360
add eax, 3
cmp byte [eax], 1
jne 0x45b36d
or byte [esi + 0x18], 0x80
inc eax
mov dword [esi + 0x10], eax
cmp dword [esi + 0x10], 0
jne 0x45b37f
push edi
push edx
call fcn.0045b6d0
pop ecx
mov dword [esi + 0x10], eax
pop ecx
cmp dword [0x499e58], 2
jne 0x45b38e
or byte [esi + 0x19], 1
jmp 0x45b408
mov eax, dword [esi + 0x10]
test eax, eax
je 0x45b408
movzx edi, byte [eax]
push 1
pop edx
cmp edi, edx
jle 0x45b3ca
mov cl, byte [edx + eax]
cmp cl, 0xff
je 0x45b3c6
cmp dword [0x499e58], 0
je 0x45b3bf
mov ebx, dword [sym.ruby187g.exc_re_mbctab]
movzx ecx, cl
cmp byte [ecx + ebx], 0
jne 0x45b3c6
inc edx
cmp edx, edi
jl 0x45b39f
jmp 0x45b3ca
or byte [esi + 0x19], 1
test byte [esi + 0x19], 1
jne 0x45b408
push 0x400
call dword [sym.imp.MSVCRT.dll_malloc]
test byte [esi + 0x18], 0x21
pop ecx
mov dword [esi + 0x14], eax
je 0x45b3f3
mov ecx, dword [0x499e54]
test ecx, ecx
je 0x45b3f3
mov edx, ecx
jmp 0x45b3f5
xor edx, edx
mov ecx, dword [esi + 0x10]
push edx
movzx edx, byte [ecx]
inc ecx
push edx
push ecx
push eax
call fcn.0045ba14
add esp, 0x10
mov eax, dword [ebp - 0x54]
mov edi, dword [sym.imp.MSVCRT.dll_malloc]
mov ebx, eax
shl ebx, 2
push ebx
call edi
push ebx
mov dword [esi + 0x24], eax
call edi
push ebx
mov dword [esi + 0x28], eax
call edi
push ebx
mov dword [esi + 0x2c], eax
call edi
push ebx
mov dword [esi + 0x30], eax
call edi
push ebx
mov dword [esi + 0x34], eax
call edi
push ebx
mov dword [esi + 0x38], eax
call edi
mov dword [esi + 0x3c], eax
lea eax, [ebp - 0x114]
add esp, 0x1c
cmp dword [ebp - 0x1c], eax
je 0x45b458
push dword [ebp - 0x1c]
call dword [sym.imp.MSVCRT.dll_free]
pop ecx
xor eax, eax
pop edi
pop esi
pop ebx
leave
ret