Function at 0x422420
Capabilities:
Parse credit card information

Disassembly:
sub esp, 0x8c
pushal
mov edi, eax
mov dword [esp + 0x20], edi
mov eax, edi
call fcn.00423a44
cmp ebx, 0
jne 0x42245d
mov al, byte [edi]
and al, 0xf8
or al, 5
mov byte [edi], al
and byte [edi], 0xc7
mov ax, word [edi]
and ax, 0x807f
or ax, 0x7f80
mov word [edi], ax
jmp 0x423a3b
cmp al, 0x42
je 0x4224a8
jmp 0x4224c0
mov dword [edi + 0x204], ebx
cmp byte [ebx], 0x40
sete al
movzx eax, al
lea ebx, [ebx + eax]
mov eax, 0x5201b8
call fcn.004eba60
mov eax, 0x5201b8
call fcn.00420750
mov ecx, eax
mov dword [esp + 0x49], ecx
cmp ecx, 1
jb 0x423a3b
cmp ecx, 0xff
ja 0x423a3b
mov al, byte [ecx + 0x5201b7]
cmp al, 0x62
jne 0x422457
dec ecx
mov dword [esp + 0x49], ecx
cmp ecx, 2
jb 0x423a3b
or dword [edi], 0x40
mov byte [ecx + 0x5201b8], 0
mov ah, byte [0x5201b8]
mov al, byte [ecx + 0x5201b7]
lea esi, [edi + 6]
mov dword [esp + 0x39], esi
movsx edx, ah
mov ebp, edx
cmp ebp, 0x73
je 0x4224e2
cmp ebp, 0x53
jne 0x42253c
mov eax, 0x5201b9
call fcn.00474d30
mov ebx, eax
cmp ebx, 0
je 0x423a34
cmp ebx, 0xff
ja 0x423a34
mov eax, 0x5201b9
call fcn.004223a0
cmp eax, 0
jne 0x423a34
mov al, byte [edi]
and al, 0xf8
or al, 5
mov byte [edi], al
and byte [edi], 0xc7
mov ax, word [edi]
and ax, 0x807f
shl bx, 7
and bx, 0x7f80
or ax, bx
mov word [edi], ax
jmp 0x423a3b
cmp ebp, 0x64
je 0x42254a
cmp ebp, 0x44
jne 0x422a7f
mov al, byte [edi]
and al, 0xf8
or al, 2
mov byte [edi], al
mov al, byte [edi]
and al, 0xc7
or al, 8
mov byte [edi], al
mov dword [esp + 0xa8], 1
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x30
je 0x422595
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x5f
je 0x422595
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x2a
jne 0x4225a6
inc dword [esp + 0xa8]
mov ebp, dword [esp + 0xa8]
dec ebp
jmp 0x4225ab
mov ebp, 0
lea ebx, [esp + 0xa8]
mov eax, 0x5201b8
call fcn.00422374
mov byte [edi + 5], al
inc dword [esp + 0xa8]
mov eax, dword [esp + 0xa8]
mov cl, byte [eax + 0x5201b7]
cmp cl, 0x3e
jne 0x422650
mov eax, 0x5201b8
call fcn.00422374
mov byte [edi + 4], al
cmp cl, 0x3e
jne 0x422609
cmp byte [edi + 4], 0
je 0x4225fd
mov ebx, 0x63
movsx eax, byte [edi + 4]
sub ebx, eax
jmp 0x422602
mov ebx, 0x13
mov al, bl
mov byte [edi + 4], al
jmp 0x42261d
cmp byte [edi + 4], 0
je 0x422615
movsx eax, byte [edi + 4]
jmp 0x42261a
mov eax, 0x50
mov byte [edi + 4], al
inc dword [esp + 0xa8]
mov eax, dword [esp + 0xa8]
mov cl, byte [eax + 0x5201b7]
jmp 0x422659
mov eax, dword [esp + 0xa8]
lea eax, [eax + 0x5201b8]
call fcn.004223a0
cmp eax, 0
jne 0x423a34
jmp 0x42265e
cmp cl, 0x3c
je 0x4225d8
mov byte [edi + 4], 0x50
cmp cl, 0
jne 0x422633
cmp cl, 0x2e
je 0x422672
cmp cl, 0x2d
je 0x422672
cmp cl, 0x5f
je 0x422672
cmp cl, 0x60
jne 0x42267d
mov al, cl
call fcn.00422350
mov dl, al
jmp 0x42267f
mov dl, 0
movsx eax, byte [edi + 5]
cmp eax, 1
je 0x42268d
cmp eax, 2
jne 0x4226a8
mov eax, esi
mov ebx, str.__a0_a_
mov ecx, 0x10
call fcn.00420790
jmp 0x4226b2
cmp byte [edi + 5], 6
je 0x4226b8
jmp 0x4226c9
cmp eax, 5
je 0x4226b2
cmp eax, 6
jne 0x42270f
cmp byte [edi + 5], 5
jne 0x4226a0
mov eax, esi
mov ebx, 0x59b21c
mov ecx, 0x10
call fcn.00420790
cmp byte [edi + 5], 2
jne 0x4226f6
mov byte [esi + 0x12], 0x30
mov al, byte [esi + 0x12]
mov byte [esi + 0x10], al
mov byte [esi + 0x13], 9
mov al, byte [esi + 0x13]
mov byte [esi + 0x11], al
mov ax, word [edi]
and ax, 0x807f
or ax, 0x500
mov word [edi], ax
jmp 0x4229f9
cmp byte [edi + 5], 6
je 0x4226cf
mov ax, word [edi]
and ax, 0x807f
or ax, 0x400
mov word [edi], ax
jmp 0x4229f9
cmp eax, 3
jne 0x422738
mov eax, esi
mov ebx, 0x59b22c
mov ecx, 0x16
call fcn.00420790
mov ax, word [edi]
and ax, 0x807f
or ax, 0x580
mov word [edi], ax
jmp 0x4229f9
cmp eax, 4
jne 0x422761
mov eax, esi
mov ebx, str.__n__n__n__n__n__n__n__n__n__n__n__n
mov ecx, 0x2a
call fcn.00420790
mov ax, word [edi]
and ax, 0x807f
or ax, 0xa80
mov word [edi], ax
jmp 0x4229f9
cmp eax, 7
je 0x42276b
cmp eax, 8
jne 0x4227bc
mov eax, esi
mov ebx, str.__b0_b
mov ecx, 0x12
call fcn.00420790
cmp byte [edi + 5], 8
jne 0x4227a9
mov byte [esi + 0x14], 0x30
mov al, byte [esi + 0x14]
mov byte [esi + 0x12], al
mov byte [esi + 0x15], 9
mov al, byte [esi + 0x15]
mov byte [esi + 0x13], al
mov ax, word [edi]
and ax, 0x807f
or ax, 0x580
mov word [edi], ax
jmp 0x4229f9
mov ax, word [edi]
and ax, 0x807f
or ax, 0x480
mov word [edi], ax
jmp 0x4229f9
cmp eax, 9
je 0x4227c6
cmp eax, 0xf
jne 0x42281a
mov eax, esi
mov ebx, str.0_t0_t_
mov ecx, 0x10
call fcn.00420790
mov ax, word [edi]
and ax, 0x807f
or ax, 0x400
mov word [edi], ax
cmp byte [edi + 5], 0xf
jne 0x4229f9
mov ax, word [edi]
and ax, 0x807f
mov bx, word [edi]
and bx, 0x7f80
shr bx, 7
sub bx, 3
shl bx, 7
and bx, 0x7f80
or ax, bx
mov word [edi], ax
jmp 0x4229f9
cmp eax, 0xa
je 0x422824
cmp eax, 0x10
jne 0x42288c
mov byte [esi + 2], 0x30
mov al, byte [esi + 2]
mov byte [esi], al
mov byte [esi + 3], 9
mov al, byte [esi + 3]
mov byte [esi + 1], al
lea eax, [esi + 4]
mov ebx, str.0_t0_t_
mov ecx, 0x10
call fcn.00420790
mov ax, word [edi]
and ax, 0x807f
or ax, 0x500
mov word [edi], ax
cmp byte [edi + 5], 0x10
jne 0x4229f9
mov ax, word [edi]
and ax, 0x807f
mov bx, word [edi]
and bx, 0x7f80
shr bx, 7
sub bx, 3
shl bx, 7
and bx, 0x7f80
or ax, bx
mov word [edi], ax
jmp 0x4229f9
cmp eax, 0xb
jne 0x4228b5
mov eax, esi
mov ebx, 0x59b294
mov ecx, 0xc
call fcn.00420790
mov ax, word [edi]
and ax, 0x807f
or ax, 0x300
mov word [edi], ax
jmp 0x4229f9
cmp eax, 0xc
jne 0x4228f2
mov byte [esi + 2], 0x30
mov al, byte [esi + 2]
mov byte [esi], al
mov byte [esi + 3], 9
mov al, byte [esi + 3]
mov byte [esi + 1], al
lea eax, [esi + 4]
mov ebx, 0x59b294
mov ecx, 0xc
call fcn.00420790
mov ax, word [edi]
and ax, 0x807f
or ax, 0x400
mov word [edi], ax
jmp 0x4229f9
cmp eax, 0xd
je 0x4228fc
cmp eax, 0xe
jne 0x42296b
mov byte [esi + 2], 0x30
mov al, byte [esi + 2]
mov byte [esi], al
mov byte [esi + 3], 7
mov al, byte [esi + 3]
mov byte [esi + 1], al
mov byte [esi + 5], 0x13
mov byte [esi + 4], 0x2f
mov byte [esi + 8], 0x30
mov al, byte [esi + 8]
mov byte [esi + 6], al
mov byte [esi + 9], 9
mov al, byte [esi + 9]
mov byte [esi + 7], al
cmp byte [edi + 5], 0xe
jne 0x422958
mov byte [esi + 0xc], 0x30
mov al, byte [esi + 0xc]
mov byte [esi + 0xa], al
mov byte [esi + 0xd], 9
mov al, byte [esi + 0xd]
mov byte [esi + 0xb], al
mov ax, word [edi]
and ax, 0x807f
or ax, 0x380
mov word [edi], ax
jmp 0x4229f9
mov ax, word [edi]
and ax, 0x807f
or ax, 0x280
mov word [edi], ax
jmp 0x4229f9
cmp eax, 0x11
je 0x422979
cmp eax, 0x12
jne 0x423a34
cmp byte [edi + 5], 0x11
jne 0x422990
mov esi, 0x59b0c7
jmp 0x422995
cmp ebp, 0
jne 0x4229fe
jmp 0x423a3b
mov esi, 0x59b0eb
lea eax, [edi + 6]
lea ebx, [esi + 6]
mov cx, word [esi]
and cx, 0x7f80
shr cx, 7
movzx ecx, cx
shl ecx, 1
call fcn.00420803
mov ax, word [edi]
and ax, 0x807f
mov bx, word [esi]
and bx, 0x7f80
shr bx, 7
shl bx, 7
and bx, 0x7f80
or ax, bx
mov word [edi], ax
mov al, byte [edi]
and al, 0xc7
mov ah, byte [esi]
and ah, 0x38
shr ah, 3
shl ah, 3
and ah, 0x38
or al, ah
mov byte [edi], al
mov al, byte [edi]
and al, 0xf8
mov ah, byte [esi]
and ah, 7
and ah, 7
or al, ah
mov byte [edi], al
cmp dl, 0
je 0x422986
mov dword [esp + 0xa8], 0
mov eax, dword [esp + 0xa8]
mov bx, word [edi]
and bx, 0x7f80
shr bx, 7
movzx ebx, bx
cmp eax, ebx
jae 0x423a3b
mov eax, dword [esp + 0xa8]
movzx eax, byte [edi + eax*2 + 7]
cmp eax, 0x13
jne 0x422a4c
cmp dl, 0
je 0x422a76
mov ebx, dword [esp + 0xa8]
mov al, dl
mov byte [edi + ebx*2 + 6], al
jmp 0x422a76
cmp eax, 7
je 0x422a60
cmp eax, 8
je 0x422a60
cmp eax, 9
je 0x422a60
cmp eax, 0xa
jne 0x422a76
cmp ebp, 0
je 0x422a76
mov ebx, dword [esp + 0xa8]
mov al, byte [ebp + 0x5201b8]
mov byte [edi + ebx*2 + 6], al
inc dword [esp + 0xa8]
jmp 0x422a09
cmp ebp, 0x74
je 0x422a8d
cmp ebp, 0x54
jne 0x422d85
mov ah, byte [edi]
and ah, 0xf8
or ah, 3
mov byte [edi], ah
mov ah, byte [edi]
and ah, 0xc7
or ah, 8
mov byte [edi], ah
cmp al, 0x2e
je 0x422ab1
cmp al, 0x2d
je 0x422ab1
cmp al, 0x5f
je 0x422ab1
cmp al, 0x60
jne 0x422ac2
dec ecx
mov byte [ecx + 0x5201b8], 0
call fcn.00422350
mov dl, al
jmp 0x422ac4
mov dl, 0
mov dword [esp + 0xa8], 1
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x30
je 0x422aff
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x5f
je 0x422aff
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x2a
jne 0x422b10
inc dword [esp + 0xa8]
mov ebp, dword [esp + 0xa8]
dec ebp
jmp 0x422b15
mov ebp, 0
mov eax, dword [esp + 0xa8]
lea eax, [eax + 0x5201b8]
call fcn.00474d30
mov byte [edi + 5], al
mov eax, dword [esp + 0xa8]
lea eax, [eax + 0x5201b8]
call fcn.004223a0
cmp eax, 0
jne 0x423a34
movsx eax, byte [edi + 5]
cmp eax, 1
jne 0x422b72
mov eax, esi
mov ebx, 0x59b2a0
mov ecx, 0xa
call fcn.00420790
mov ax, word [edi]
and ax, 0x807f
or ax, 0x280
mov word [edi], ax
jmp 0x422d04
cmp eax, 2
jne 0x422b9b
mov eax, esi
mov ebx, str.__v0_v0_f0_fE
mov ecx, 8
call fcn.00420790
mov ax, word [edi]
and ax, 0x807f
or ax, 0x200
mov word [edi], ax
jmp 0x422d04
cmp eax, 3
jne 0x422bd4
mov eax, esi
mov ebx, 0x59b2a0
mov ecx, 0xa
call fcn.00420790
mov byte [esi + 0xa], 0x58
mov byte [esi + 0xb], 0x14
mov byte [esi + 0xc], 0x4d
mov byte [esi + 0xd], 0
mov ax, word [edi]
and ax, 0x807f
or ax, 0x380
mov word [edi], ax
jmp 0x422d04
cmp eax, 4
jne 0x422c19
mov eax, esi
mov ebx, 0x59b2a0
mov ecx, 0xa
call fcn.00420790
mov byte [esi + 0xa], 0x3a
mov byte [esi + 0xb], 0x13
mov byte [esi + 0xe], 0x30
mov al, byte [esi + 0xe]
mov byte [esi + 0xc], al
mov byte [esi + 0xf], 0xd
mov al, byte [esi + 0xf]
mov byte [esi + 0xd], al
mov ax, word [edi]
and ax, 0x807f
or ax, 0x400
mov word [edi], ax
jmp 0x422d04
cmp eax, 5
jne 0x422c56
mov eax, esi
mov ebx, str.__v0_v0_f0_fE
mov ecx, 8
call fcn.00420790
mov byte [esi + 0xa], 0x30
mov al, byte [esi + 0xa]
mov byte [esi + 8], al
mov byte [esi + 0xb], 0xd
mov al, byte [esi + 0xb]
mov byte [esi + 9], al
mov ax, word [edi]
and ax, 0x807f
or ax, 0x300
mov word [edi], ax
jmp 0x422d04
cmp eax, 6
jne 0x422ca8
mov eax, esi
mov ebx, 0x59b2a0
mov ecx, 0xa
call fcn.00420790
mov byte [esi + 0xa], 0x3a
mov byte [esi + 0xb], 0x13
mov byte [esi + 0xe], 0x30
mov al, byte [esi + 0xe]
mov byte [esi + 0xc], al
mov byte [esi + 0xf], 0xd
mov al, byte [esi + 0xf]
mov byte [esi + 0xd], al
mov byte [esi + 0x10], 0x58
mov byte [esi + 0x11], 0x14
mov byte [esi + 0x12], 0x4d
mov byte [esi + 0x13], 0
mov ax, word [edi]
and ax, 0x807f
or ax, 0x500
mov word [edi], ax
jmp 0x422d04
cmp eax, 7
je 0x422cb6
cmp eax, 8
jne 0x423a34
mov al, byte [edi]
and al, 0x40
shr al, 6
movzx esi, al
cmp byte [edi + 5], 7
jne 0x422ce3
mov eax, edi
mov ebx, 0x59b12f
mov ecx, 0x1c
call fcn.00420803
jmp 0x422cf4
cmp ebp, 0
jne 0x422d09
jmp 0x423a3b
mov eax, edi
mov ebx, 0x59b14b
mov ecx, 0x24
call fcn.00420803
mov bl, byte [edi]
and bl, 0xbf
mov eax, esi
shl al, 6
and al, 0x40
or bl, al
mov byte [edi], bl
cmp dl, 0
je 0x422cd9
mov dword [esp + 0xa8], 0
mov eax, dword [esp + 0xa8]
mov bx, word [edi]
and bx, 0x7f80
shr bx, 7
movzx ebx, bx
cmp eax, ebx
jae 0x423a3b
mov eax, dword [esp + 0xa8]
movzx eax, byte [edi + eax*2 + 7]
cmp eax, 0x13
jne 0x422d57
cmp dl, 0
je 0x422d7c
mov ebx, dword [esp + 0xa8]
mov al, dl
mov byte [edi + ebx*2 + 6], al
jmp 0x422d7c
cmp eax, 0xb
je 0x422d66
cmp eax, 0xc
je 0x422d66
cmp eax, 0xd
jne 0x422d7c
cmp ebp, 0
je 0x422d7c
mov ebx, dword [esp + 0xa8]
mov al, byte [ebp + 0x5201b8]
mov byte [edi + ebx*2 + 6], al
inc dword [esp + 0xa8]
jmp 0x422d14
cmp ebp, 0x6e
pushfd
lea ebx, [esp + 0xa8]
mov dword [esp + 0x6b], ebx
popfd
je 0x422da0
cmp ebp, 0x4e
jne 0x4235d6
and byte [edi], 0xf8
mov al, byte [edi]
and al, 0xc7
or al, 0x18
mov edi, dword [esp + 0x20]
mov byte [edi], al
mov dword [esp + 0xa8], 1
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x24
jne 0x422e3b
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x73], eax
inc dword [esp + 0xa8]
mov edx, dword [esp + 0xa8]
cmp byte [edx + 0x5201b7], 0x24
jne 0x422e0d
mov dword [esp + 0x63], 1
jmp 0x422e5c
inc dword [esp + 0xa8]
mov edx, dword [esp + 0xa8]
cmp byte [edx + 0x5201b7], 0x7e
je 0x422e18
mov edx, dword [esp + 0xa8]
cmp edx, ecx
jb 0x422df6
mov edx, dword [esp + 0xa8]
sub edx, eax
sub edx, 2
mov dword [esp + 0x63], edx
cmp edx, 1
jl 0x423a34
inc eax
mov dword [esp + 0x73], eax
jmp 0x422e5c
inc edx
jmp 0x422e97
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x7e
je 0x422dca
mov eax, 0
mov dword [esp + 0x63], eax
mov dword [esp + 0x73], eax
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x2d
jne 0x422ec0
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x6b], eax
mov eax, 0
mov dword [esp + 0x6f], eax
mov edx, dword [esp + 0xa8]
cmp byte [edx + 0x5201b8], 0x28
jne 0x422eb7
mov edx, dword [esp + 0xa8]
mov ebp, edx
cmp ebp, ecx
jae 0x422eae
mov ebp, edx
cmp byte [ebp + 0x5201b8], 0x29
jne 0x422e38
mov eax, edx
mov dword [esp + 0x6f], eax
cmp eax, 0
je 0x423a34
inc dword [esp + 0xa8]
jmp 0x422edd
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x28
je 0x422e6c
mov eax, 0
mov dword [esp + 0x6f], eax
mov dword [esp + 0x6b], eax
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x30
je 0x422f0d
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x5f
je 0x422f0d
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x2a
jne 0x422f22
inc dword [esp + 0xa8]
mov eax, dword [esp + 0xa8]
dec eax
mov dword [esp + 0x31], eax
jmp 0x422f2a
mov dword [esp + 0x31], 0
mov ebp, dword [esp + 0xa8]
mov eax, dword [esp + 0xa8]
mov dword [esp + 0xa4], eax
mov eax, 0x5201b8
call fcn.00422374
mov dword [esp + 0x41], eax
mov ebx, dword [esp + 0xa4]
cmp ebx, ebp
je 0x423a34
cmp eax, 1
jb 0x423a34
cmp eax, 0xff
ja 0x423a34
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xa8], eax
mov edx, 0
mov dword [esp + 0x35], edx
mov eax, edx
mov dword [esp + 0x45], eax
mov dword [esp + 0x2d], eax
mov cl, al
mov byte [esp + 0x8f], cl
mov eax, dword [esp + 0xa8]
mov al, byte [eax + 0x5201b8]
mov byte [esp + 0x4d], al
mov ebx, dword [esp + 0xa8]
mov eax, dword [esp + 0x49]
cmp ebx, eax
jb 0x422ff1
jmp 0x4230e9
mov ebx, dword [esp + 0xa8]
cmp byte [ebx + 0x5201b8], 0x76
je 0x423087
jmp 0x423090
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x7e
je 0x423166
jmp 0x4231e5
mov bl, byte [esp + 0x4d]
cmp bl, 0x56
je 0x423012
cmp bl, 0x76
je 0x423012
cmp bl, 0x2e
je 0x423012
cmp bl, 0x60
je 0x423012
cmp bl, 0x5f
jne 0x4230e9
mov ebx, dword [esp + 0xa8]
cmp ebx, eax
jae 0x4230e9
mov ebx, dword [esp + 0xa8]
mov bl, byte [ebx + 0x5201b9]
cmp bl, 0x76
je 0x42304c
cmp bl, 0x56
je 0x42304c
cmp bl, 0
je 0x42304c
cmp bl, 0x2e
je 0x42304c
cmp bl, 0x60
je 0x42304c
cmp bl, 0x5f
jne 0x42305f
inc dword [esp + 0xa8]
mov ebx, dword [esp + 0xa8]
dec ebx
mov dword [esp + 0x2d], ebx
mov ebx, dword [esp + 0xa8]
mov cl, byte [ebx + 0x5201b8]
mov byte [esp + 0x8f], cl
mov ebx, dword [esp + 0xa8]
cmp byte [ebx + 0x5201b8], 0x56
jne 0x422fbf
mov edx, 1
mov dword [esp + 0x35], edx
inc dword [esp + 0xa8]
mov ebx, dword [esp + 0xa8]
cmp ebx, eax
ja 0x4230e9
mov eax, dword [esp + 0xa8]
mov dword [esp + 0xa4], eax
mov ebx, dword [esp + 0x67]
mov eax, 0x5201b8
call fcn.00422374
mov dword [esp + 0x45], eax
mov ebx, dword [esp + 0xa4]
mov dword [esp + 0xa8], ebx
cmp eax, 0xff
ja 0x423a34
cmp eax, 0
jne 0x4230e9
mov cl, 0
mov byte [esp + 0x8f], cl
mov ebx, dword [esp + 0xa8]
mov eax, dword [esp + 0x49]
cmp ebx, eax
jae 0x4231e5
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x2d
jne 0x42312a
cmp dword [esp + 0x6b], 0
jne 0x423a34
inc dword [esp + 0xa8]
mov eax, dword [esp + 0xa8]
dec eax
mov dword [esp + 0x6b], eax
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x29
jne 0x423152
mov eax, dword [esp + 0xa8]
cmp dword [esp + 0x6f], eax
jne 0x423a34
inc dword [esp + 0xa8]
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b8], 0x24
jne 0x422fd8
cmp dword [esp + 0x73], 0
jne 0x423a34
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x73], eax
inc dword [esp + 0xa8]
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b7], 0x24
jne 0x4231b4
mov dword [esp + 0x63], 1
jmp 0x4231e5
inc dword [esp + 0xa8]
mov eax, dword [esp + 0xa8]
cmp byte [eax + 0x5201b7], 0x7e
je 0x4231c3
mov ebx, dword [esp + 0xa8]
mov eax, dword [esp + 0x49]
cmp ebx, eax
jb 0x42319d
mov ebx, dword [esp + 0xa8]
mov eax, dword [esp + 0x73]
sub ebx, eax
sub ebx, 2
mov dword [esp + 0x63], ebx
cmp ebx, 1
jl 0x423a34
inc eax
mov dword [esp + 0x73], eax
mov ebx, dword [esp + 0xa8]
mov eax, dword [esp + 0x49]
cmp ebx, eax
jb 0x423a34
cmp dword [esp + 0x6b], 0
je 0x423206
mov eax, 1
jmp 0x42320b
mov eax, 0
cmp dword [esp + 0x6f], 0
je 0x42321c
mov dword [esp + 0x5f], 1
jmp 0x423224
mov dword [esp + 0x5f], 0
mov ebx, dword [esp + 0x45]
cmp ebx, 0
je 0x423234
inc ebx
mov dword [esp + 0x77], ebx
jmp 0x42323c
mov dword [esp + 0x77], 0
mov ebx, dword [esp + 0x63]
add ebx, eax
mov eax, dword [esp + 0x5f]
add ebx, eax
add ebx, dword [esp + 0x77]
mov dword [esp + 0xa8], ebx
mov eax, dword [esp + 0xa8]
mov ebx, dword [esp + 0x41]
cmp eax, ebx
ja 0x423a34
mov dword [esp + 0xa8], 0
mov eax, ebx
dec eax
mov dword [esp + 0x3d], eax
mov eax, dword [esp + 0x73]
cmp eax, 0
je 0x4232f3
cmp eax, ebp
jae 0x42329d
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x5b], eax
mov ebx, dword [esp + 0x63]
add dword [esp + 0xa8], ebx
jmp 0x4232eb
mov ebx, dword [esp + 0x41]
mov eax, dword [esp + 0x63]
sub ebx, eax
mov eax, ebx
mov dword [esp + 0x5b], eax
dec ebx
mov dword [esp + 0x3d], ebx
jmp 0x4232eb
mov eax, dword [esp + 0x63]
dec eax
mov dword [esp + 0x63], eax
inc eax
cmp eax, 0
jne 0x4232c5
jmp 0x4232f3
mov eax, dword [esp + 0x73]
inc eax
mov dword [esp + 0x73], eax
mov ebx, dword [esp + 0x5b]
mov al, byte [eax + 0x5201b7]
mov byte [esi + ebx*2], al
mov eax, dword [esp + 0x5b]
mov ebx, eax
mov byte [esi + ebx*2 + 1], 6
inc eax
mov dword [esp + 0x5b], eax
mov ebx, dword [esp + 0x41]
cmp eax, ebx
jbe 0x4232b4
mov eax, dword [esp + 0x6b]
cmp eax, 0
je 0x423339
cmp eax, ebp
jae 0x423311
inc dword [esp + 0xa8]
mov ebp, dword [esp + 0xa8]
dec ebp
jmp 0x42331b
mov ebp, dword [esp + 0x3d]
dec ebp
mov dword [esp + 0x3d], ebp
inc ebp
mov dword [esp + 0x57], ebp
mov dword [esp + 0x7b], ebp
mov al, byte [eax + 0x5201b8]
mov ebp, dword [esp + 0x7b]
mov byte [esi + ebp*2], al
mov eax, dword [esp + 0x57]
mov byte [esi + eax*2 + 1], 5
mov eax, dword [esp + 0x6f]
cmp eax, 0
je 0x42336a
mov ebp, dword [esp + 0x3d]
dec ebp
mov dword [esp + 0x3d], ebp
inc ebp
mov dword [esp + 0x53], ebp
mov dword [esp + 0x7f], ebp
mov al, byte [eax + 0x5201b8]
mov ebp, dword [esp + 0x7f]
mov byte [esi + ebp*2], al
mov eax, dword [esp + 0x53]
mov byte [esi + eax*2 + 1], 5
cmp dword [esp + 0x45], 0
je 0x423404
cmp cl, 0
je 0x42337f
movsx eax, cl
jmp 0x423384
mov eax, 0x2e
call fcn.00422350
mov edx, dword [esp + 0x45]
dec edx
mov dword [esp + 0x45], edx
inc edx
cmp edx, 0
je 0x4233b4
mov edx, dword [esp + 0x3d]
mov ebp, edx
mov esi, dword [esp + 0x39]
mov byte [esi + ebp*2], 0x30
mov ebp, edx
mov byte [esi + ebp*2 + 1], 3
dec edx
mov dword [esp + 0x3d], edx
jmp 0x423389
mov ebp, dword [esp + 0x3d]
mov edx, ebp
mov dword [esp + 0x83], edx
mov edx, dword [esp + 0x83]
mov esi, dword [esp + 0x39]
mov byte [esi + edx*2], al
mov edx, dword [esp + 0x35]
cmp edx, 0
je 0x4233df
mov eax, 0x16
jmp 0x4233e4
mov eax, 2
mov dword [esp + 0x87], ebp
mov ebp, dword [esp + 0x87]
mov byte [esi + ebp*2 + 1], al
mov eax, dword [esp + 0x3d]
cmp eax, 0
je 0x423404
dec eax
mov dword [esp + 0x3d], eax
mov ebp, dword [esp + 0x3d]
mov eax, ebp
cmp byte [esi + eax*2 + 1], 0
jne 0x42344f
mov eax, ebp
mov byte [esi + eax*2], 0x30
cmp edx, 0
je 0x423432
mov eax, 4
jmp 0x423437
cmp byte [eax + 0x5201b8], 0x2a
jne 0x42342e
jmp 0x423458
mov al, 0
jmp 0x42345a
mov eax, 3
mov edx, ebp
mov dword [esp + 0x8b], edx
mov edx, dword [esp + 0x8b]
mov esi, dword [esp + 0x39]
mov byte [esi + edx*2 + 1], al
mov eax, dword [esp + 0x31]
cmp eax, 0
jne 0x423423
mov al, 0x2c
mov edx, dword [esp + 0x2d]
cmp edx, 0
je 0x42347e
mov al, byte [edx + 0x5201b8]
jmp 0x423599
cmp dword [esp + 0x45], 0
je 0x423477
jmp 0x423483
mov al, cl
jmp 0x423599
cmp cl, 0
jne 0x42346e
cmp al, 0
je 0x423599
cmp cl, 0x60
jne 0x423590
mov al, 0x2e
jmp 0x423599
cmp ecx, 3
je 0x4234ae
jmp 0x423534
cmp dword [esp + 0x31], 0
jne 0x4234db
jmp 0x423516
mov ecx, dword [esp + 0xa8]
cmp ebp, ecx
jle 0x423534
mov ecx, ebp
mov dword [esp + 0x90], ecx
mov ah, al
mov edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x39]
mov byte [ecx + edx*2], ah
cmp dword [esp + 0x2d], 0
je 0x4234a5
jmp 0x423516
cmp byte [esp + 0x8f], 0
jne 0x42350f
cmp al, 0x20
jne 0x4234f0
mov eax, 4
jmp 0x4234f5
mov eax, 3
mov ecx, ebp
mov dword [esp + 0x94], ecx
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x39]
mov byte [edx + ecx*2 + 1], al
jmp 0x42351d
cmp dword [esp + 0x45], 0
jne 0x4234e5
mov eax, ebp
mov byte [ecx + eax*2 + 1], 1
mov ecx, 0
mov dword [esp + 0x29], ecx
jmp 0x42358d
mov al, byte [esp + 0x28]
cmp al, 0
jne 0x42349b
mov eax, dword [esp + 0x31]
cmp eax, 0
je 0x423546
movsx eax, byte [eax + 0x5201b8]
jmp 0x42354b
mov eax, 0x20
cmp al, 0x5f
jne 0x423551
mov al, 0x20
mov ecx, ebp
mov ah, al
mov edx, dword [esp + 0x39]
mov byte [edx + ecx*2], ah
cmp al, 0x20
jne 0x423567
mov eax, 4
jmp 0x42356c
mov eax, 3
mov ecx, ebp
mov dword [esp + 0x98], ecx
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0x39]
mov byte [edx + ecx*2 + 1], al
mov ecx, dword [esp + 0x29]
inc ecx
mov dword [esp + 0x29], ecx
dec ebp
jmp 0x4235ac
cmp dword [esp + 0x31], 0
je 0x423599
mov al, 0x2a
call fcn.00422350
mov byte [esp + 0x28], al
mov ecx, 1
mov dword [esp + 0x29], ecx
dec ebp
mov eax, dword [esp + 0xa8]
cmp ebp, eax
jge 0x423528
mov ax, word [edi]
and ax, 0x807f
shl bx, 7
and bx, 0x7f80
or ax, bx
mov word [edi], ax
jmp 0x423a3b
cmp ebp, 0x65
je 0x4235e4
cmp ebp, 0x45
jne 0x423829
mov al, byte [edi]
and al, 0xf8
or al, 1
mov byte [edi], al
mov al, byte [edi]
and al, 0xc7
or al, 0x10
mov byte [edi], al
mov dword [esp + 0xa4], 1
mov eax, 0x5201b8
call fcn.00422374
cmp eax, 7
jb 0x423a34
cmp eax, 0xff
ja 0x423a34
mov ebx, dword [esp + 0xa4]
mov dword [esp + 0xa8], ebx
mov bx, word [edi]
and bx, 0x807f
shl ax, 7
and ax, 0x7f80
or bx, ax
mov word [edi], bx
mov ebp, 0
mov ecx, 0
mov bl, cl
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0x49]
cmp edx, eax
jae 0x4236c7
mov eax, dword [esp + 0xa8]
mov al, byte [eax + 0x5201b9]
cmp al, 0x2e
je 0x423675
cmp al, 0x60
je 0x423675
cmp al, 0x5f
jne 0x423684
inc dword [esp + 0xa8]
mov ecx, dword [esp + 0xa8]
dec ecx
mov eax, dword [esp + 0xa8]
mov bl, byte [eax + 0x5201b8]
inc dword [esp + 0xa8]
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0x49]
cmp edx, eax
ja 0x4236c7
mov eax, dword [esp + 0xa8]
lea eax, [eax + 0x5201b8]
call fcn.00474d30
mov ebp, eax
cmp ebp, 0xff
ja 0x423a34
cmp ebp, 3
jbe 0x4236da
mov eax, ebp
dec eax
mov edi, 3
sub edx, edx
div edi
jmp 0x4236df
mov eax, 0
mov dword [esp + 0xa8], eax
mov edi, dword [esp + 0x20]
mov ax, word [edi]
and ax, 0x7f80
shr ax, 7
movzx eax, ax
mov dword [esp + 0x9c], eax
mov eax, ebp
mov edx, dword [esp + 0xa8]
add eax, edx
mov dword [esp + 0x4f], eax
add eax, 7
cmp dword [esp + 0x9c], eax
jb 0x423a34
mov eax, dword [esp + 0x4f]
mov dword [esp + 0x24], eax
cmp eax, 0
je 0x4237a9
mov edx, eax
mov byte [esi + edx*2], 0x30
mov byte [esi + eax*2 + 1], 3
mov al, 0x2c
cmp ecx, 0
je 0x423786
mov al, byte [ecx + 0x5201b8]
jmp 0x42378d
cmp ecx, 1
jg 0x42374c
jmp 0x423778
mov eax, ecx
mov dword [esp + 0xa0], eax
mov al, byte [esp + 0x4e]
mov edx, dword [esp + 0xa0]
mov esi, dword [esp + 0x39]
mov byte [esi + edx*2], al
mov byte [esi + ecx*2 + 1], 1
mov edx, 0
jmp 0x42379b
cmp edx, 3
je 0x423745
mov eax, ecx
mov byte [esi + eax*2], 0x30
mov byte [esi + ecx*2 + 1], 4
inc edx
jmp 0x42379b
cmp bl, 0x60
jne 0x42378d
mov al, 0x2e
call fcn.00422350
mov byte [esp + 0x4e], al
mov edx, 1
mov ecx, dword [esp + 0x24]
dec ecx
mov dword [esp + 0x24], ecx
cmp ecx, 0
jg 0x423773
mov eax, dword [esp + 0xa8]
add ebp, eax
inc ebp
cmp bl, 0
je 0x4237bd
movsx eax, bl
jmp 0x4237c2
mov eax, 0x2e
call fcn.00422350
mov ebx, ebp
mov byte [esi + ebx*2], al
mov eax, ebp
mov byte [esi + eax*2 + 1], 2
inc ebp
mov eax, ebp
mov bx, word [edi]
and bx, 0x7f80
shr bx, 7
movzx ebx, bx
sub ebx, 5
cmp eax, ebx
jae 0x4237fc
mov eax, ebp
mov byte [esi + eax*2], 0x30
mov eax, ebp
mov byte [esi + eax*2 + 1], 3
inc ebp
jmp 0x4237d4
mov byte [esi], 0x2d
mov byte [esi + 1], 5
mov ax, word [edi]
and ax, 0x7f80
shr ax, 7
movzx eax, ax
lea eax, [esi + eax*2 - 0xa]
mov ebx, 0x59b2b4
mov ecx, 0xa
call fcn.00420790
jmp 0x423a3b
cmp ebp, 0x6b
pushfd
movsx eax, al
popfd
je 0x42383c
cmp ebp, 0x4b
jne 0x423964
cmp eax, edx
jne 0x423a34
dec ecx
cmp ecx, 2
jb 0x423a34
mov al, byte [edi]
and al, 0xf8
or al, 6
mov byte [edi], al
and byte [edi], 0xc7
mov dword [esp + 0xa8], 1
mov ebx, 0
mov eax, dword [esp + 0xa8]
cmp eax, ecx
jae 0x423949
mov eax, ebx
mov byte [esi + eax*2], 0x20
mov eax, dword [esp + 0xa8]
movsx eax, byte [eax + 0x5201b8]
cmp eax, 0x23
jne 0x4238a3
mov eax, ebx
mov byte [esi + eax*2], 0x30
mov eax, ebx
mov byte [esi + eax*2 + 1], 3
jmp 0x42393c
cmp eax, 0x3c
jne 0x4238b4
mov eax, ebx
mov byte [esi + eax*2 + 1], 4
jmp 0x42393c
cmp eax, 0x40
jne 0x4238c2
mov eax, ebx
mov byte [esi + eax*2 + 1], 0xe
jmp 0x42393c
cmp eax, 0x5e
jne 0x4238d0
mov eax, ebx
mov byte [esi + eax*2 + 1], 0xf
jmp 0x42393c
cmp eax, 0x5f
jne 0x4238de
mov eax, ebx
mov byte [esi + eax*2 + 1], 0x10
jmp 0x42393c
cmp eax, 0x3f
jne 0x4238ec
mov eax, ebx
mov byte [esi + eax*2 + 1], 0x11
jmp 0x42393c
cmp eax, 0x7c
jne 0x4238fa
mov eax, ebx
mov byte [esi + eax*2 + 1], 0x17
jmp 0x42393c
cmp eax, 0x5c
jne 0x423923
mov eax, dword [esp + 0xa8]
cmp eax, ecx
je 0x423923
inc dword [esp + 0xa8]
mov edx, ebx
mov eax, dword [esp + 0xa8]
mov al, byte [eax + 0x5201b8]
mov byte [esi + edx*2], al
mov edx, ebx
mov eax, dword [esp + 0xa8]
mov al, byte [eax + 0x5201b8]
mov byte [esi + edx*2], al
mov eax, ebx
mov byte [esi + eax*2 + 1], 0
inc dword [esp + 0xa8]
inc ebx
jmp 0x423869
mov ax, word [edi]
and ax, 0x807f
shl bx, 7
and bx, 0x7f80
or ax, bx
mov word [edi], ax
jmp 0x423a3b
cmp ebp, 0x70
je 0x423972
cmp ebp, 0x50
jne 0x423a34
cmp eax, edx
jne 0x423a34
dec ecx
cmp ecx, 2
jb 0x423a34
mov ebx, 0
mov dword [esp + 0xa8], 0
mov eax, dword [esp + 0xa8]
cmp eax, ecx
jae 0x423a07
mov eax, dword [esp + 0xa8]
mov al, byte [eax + 0x5201b9]
cmp al, 0x23
jne 0x4239ca
mov eax, dword [esp + 0xa8]
mov byte [esi + eax*2], 0x30
mov eax, dword [esp + 0xa8]
mov byte [esi + eax*2 + 1], 3
inc ebx
jmp 0x4239fe
cmp al, 0x3c
jne 0x4239e8
mov eax, dword [esp + 0xa8]
mov byte [esi + eax*2], 0x20
mov eax, dword [esp + 0xa8]
mov byte [esi + eax*2 + 1], 4
inc ebx
jmp 0x4239fe
mov edx, dword [esp + 0xa8]
mov byte [esi + edx*2], al
mov eax, dword [esp + 0xa8]
mov byte [esi + eax*2 + 1], 0
inc dword [esp + 0xa8]
jmp 0x423994
mov al, byte [edi]
and al, 0xf8
or al, 4
mov byte [edi], al
mov al, byte [edi]
and al, 0xc7
or al, 0x18
mov byte [edi], al
mov ax, word [edi]
and ax, 0x807f
mov bx, cx
dec bx
shl bx, 7
and bx, 0x7f80
or ax, bx
mov word [edi], ax
jmp 0x423a3b
mov eax, edi
call fcn.00423a44
popal
add esp, 0x8c
ret