Function at 0x41fab0
Capabilities:
Authenticate hmac
Contain obfuscated stackstrings
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x2e0
mov eax, dword [ebp + 0x10]
mov edi, dword [ebp + 0xc]
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x140], 0x11fafbed
mov byte [esp + 0x144], 0xc
mov word [esp + 0x145], 0
mov byte [esp + 0x147], 0
mov ecx, 0xef013442
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x10feccfe]
xor edx, ecx
add edx, 0x54f9fab5
mov esi, edx
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
mov byte [esp + ecx + 0x10feccfe], dl
inc ecx
cmp ecx, 0xef01344a
jne 0x41fb10
mov esi, dword [edi]
movzx ecx, byte [esp + 0x140]
test cl, cl
je 0x41fb5b
lea edx, [esp + 0x141]
mov byte [esi], cl
inc esi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x41fb50
mov byte [esi], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
lea ecx, [esp + 0x40]
lea edx, [esp + 0x50]
lea edi, [esp + 0x30]
xor ebx, ebx
push ecx
push edx
push edi
mov ecx, dword [ebp + 0x14]
push dword [ecx + 0x10]
push eax
push dword [ecx + 0xc]
call fcn.004220a0
add esp, 0x18
test al, al
je 0x420c4f
mov dword [esp + 0x140], 0xcbab5554
mov byte [esp + 0x144], 0xc0
mov dword [esp + 0x145], 0
mov dword [esp + 0x148], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x140]
lea edx, [eax - 0x69527eaf]
xor edx, ecx
mov ecx, edx
not ecx
or ecx, 0x6a
mov ebx, edx
and ebx, 0x6a
sub ecx, ebx
lea ecx, [ecx + edx*2]
add cl, 0x6c
mov byte [esp + eax + 0x140], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0xc
jb 0x41fbe0
movzx eax, byte [esp + 0x140]
test al, al
je 0x41fc3b
lea ecx, [esp + 0x141]
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x41fc30
mov byte [esi], 0
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
mov dword [esp + 0x134], edx
mov dword [esp + 0x130], ecx
mov dword [esp + 0x138], eax
mov dword [esp + 0x140], 0xc6dec289
mov dword [esp + 0x144], 0xada2cfa8
mov dword [esp + 0x148], 0x83b7aec5
mov dword [esp + 0x14c], 0x80818283
mov dword [esp + 0x150], 0x969fbdf0
mov dword [esp + 0x154], 0x8d9a9c96
mov dword [esp + 0x158], 0x8c8d8e8f
mov dword [esp + 0x15c], 0x94a9e1fe
mov dword [esp + 0x160], 0xfe9bee9b
mov dword [esp + 0x164], 0xe0e08293
mov dword [esp + 0x168], 0x82a9f494
mov dword [esp + 0x16c], 0xdbf0fd9a
mov dword [esp + 0x170], 0xdc8e9ed0
mov dword [esp + 0x174], 0x9c9dded2
mov dword [esp + 0x178], 0x93e9d697
mov dword [esp + 0x17c], 0xf0f1f2f3
mov dword [esp + 0x180], 0x86939d9b
mov dword [esp + 0x184], 0xf8cde4fd
mov dword [esp + 0x188], 0xfcf795e8
mov dword [esp + 0x18c], 0xf9c1c2c3
mov dword [esp + 0x190], 0xc4c5c6ca
mov dword [esp + 0x194], 0xb6dff2cb
mov dword [esp + 0x198], 0xf7fadaf6
mov dword [esp + 0x19c], 0xc5e6c5c2
mov dword [esp + 0x1a0], 0xd4d5d6d7
mov dword [esp + 0x1a4], 0xbeeee2b7
mov dword [esp + 0x1a8], 0xb1dbaedf
mov dword [esp + 0x1ac], 0x2015441b
mov dword [esp + 0x1b0], 0x24252627
mov dword [esp + 0x1b4], 0x24292a2b
mov dword [esp + 0x1b8], 0x2a5f5a1b
mov dword [esp + 0x1bc], 0x30313233
mov dword [esp + 0x1c0], 0x5f215045
mov dword [esp + 0x1c4], 0x34a0e3b
mov byte [esp + 0x1c8], 0xf8
mov byte [esp + 0x1cd], 0
mov dword [esp + 0x1c9], 0
mov eax, 0xa94e8214
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x56b17f2c]
xor ecx, eax
add ecx, 0xb177759b
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [esp + eax + 0x56b17f2c], cl
inc eax
cmp eax, 0xa94e82a2
jne 0x41fe00
mov dword [esp + 0x58], 0x78360202
mov dword [esp + 0x5c], 0x986bd590
mov dword [esp + 0x60], 0x8f946828
mov dword [esp + 0x64], 0xebeae5e4
mov dword [esp + 0x68], 0xe77aea6d
mov dword [esp + 0x6c], 0xfb836424
mov dword [esp + 0x70], 0x97969190
mov dword [esp + 0x74], 0x538a1c5c
mov dword [esp + 0x78], 0x7cb6dd1f
mov dword [esp + 0x7c], 0xcfceda7e
mov dword [esp + 0x80], 0xcbcacdcc
mov dword [esp + 0x84], 0xc7c6c9c8
mov dword [esp + 0x88], 0x8467272
mov dword [esp + 0x8c], 0x3a7a55e0
mov dword [esp + 0x90], 0xb23979c2
mov dword [esp + 0x94], 0xbbbab5b4
mov dword [esp + 0x98], 0x77de6870
mov dword [esp + 0x9c], 0xa3867935
mov dword [esp + 0xa0], 0xa73f2c68
mov dword [esp + 0xa4], 0x83aaa5a4
mov dword [esp + 0xa8], 0xafaea9c0
mov dword [esp + 0xac], 0x99dd65ac
mov dword [esp + 0xb0], 0xa5d99970
mov dword [esp + 0xb4], 0xe1d59d7c
mov dword [esp + 0xb8], 0x5f5e5958
mov dword [esp + 0xbc], 0x6786d090
mov dword [esp + 0xc0], 0x77cf8840
mov dword [esp + 0xc4], 0x4bc00e8c
mov dword [esp + 0xc8], 0x4f4e4948
mov dword [esp + 0xcc], 0xbb724d4c
mov dword [esp + 0xd0], 0x42756ff9
mov dword [esp + 0xd4], 0x7b7a7574
mov dword [esp + 0xd8], 0x5bb2f6b0
mov dword [esp + 0xdc], 0x2b3b57c
mov byte [esp + 0xe0], 0x60
mov byte [esp + 0xe5], 0
mov dword [esp + 0xe1], 0
mov edi, 0x5cb07b2a
mov ecx, 0xd5
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + edi - 0x5cb07ad2]
lea ebx, [ecx - 0x5cb07c00]
and ebx, 0xa04e030c
mov eax, edi
and eax, 0x44906cf3
or eax, ebx
xor eax, edx
xor eax, 0xc
lea ebx, [edi - 0x5cb07b00]
and ebx, edx
or ebx, eax
not edx
or edx, ecx
and edx, ebx
add dl, 0x2e
mov byte [esp + edi - 0x5cb07ad2], dl
inc edi
dec ecx
cmp edi, 0x5cb07bb8
jne 0x41ffb0
lea eax, [esp + 0x140]
lea edx, [esp + 0x58]
lea ecx, [esp + 0x130]
push eax
push 0x88
push edx
lea eax, [esp + 0x3c]
push eax
call fcn.004404a0
mov dword [esp + 0x12c], edx
mov dword [esp + 0x128], eax
or eax, edx
je 0x4200bd
mov dword [esp + 0x140], 0x5bfcfbe8
mov byte [esp + 0x144], 0x50
mov dword [esp + 0x145], 0
mov byte [esp + 0x149], 0
mov eax, 0x1ec294ed
xor ebx, ebx
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x1ec293ad]
mov edi, eax
and edi, ecx
add ecx, eax
add edi, edi
mov edx, ecx
sub edx, edi
and ecx, 1
or edx, 1
add edx, ecx
add dl, 0x5e
mov byte [esp + eax - 0x1ec293ad], dl
inc eax
cmp eax, 0x1ec294f7
jne 0x420060
movzx eax, byte [esp + 0x140]
test al, al
je 0x4200cc
lea ecx, [esp + 0x141]
lea edx, [esp + 0x30]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4200b0
jmp 0x4200d0
mov dword [esp + 4], 0
xor ebx, ebx
jmp 0x420c57
lea edx, [esp + 0x30]
mov byte [esi], 0
lea eax, [esp + 0x128]
lea ecx, [esp + 0x130]
push 0
push 8
push eax
push edx
call fcn.004404a0
mov dword [esp + 0x124], edx
mov dword [esp + 0x120], eax
or eax, edx
je 0x420c4f
mov dword [esp + 0x140], 0xeb38380e
mov byte [esp + 0x144], 0x90
mov dword [esp + 0x145], 0
mov dword [esp + 0x148], 0
mov eax, 0xa5
mov ecx, 0x1a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, ecx
and edi, 0x1e
mov edx, eax
and edx, 0x81
or edx, edi
xor dl, byte [esp + eax + 0x9b]
xor dl, 0x3e
add dl, 0xc7
mov byte [esp + eax + 0x9b], dl
inc eax
dec ecx
cmp eax, 0xb1
jne 0x420140
movzx eax, byte [esp + 0x140]
test al, al
je 0x42018b
lea ecx, [esp + 0x141]
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420180
mov byte [esi], 0
lea eax, [esp + 0x120]
lea edx, [esp + 0x44]
lea ecx, [esp + 0x30]
push 0
push 8
push eax
push edx
call fcn.0043f980
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0x48]
je 0x420c4f
mov dword [esp + 0x140], 0x31929599
mov byte [esp + 0x144], 0x3c
mov word [esp + 0x145], 0
mov byte [esp + 0x147], 0
mov eax, 0x4a
mov ecx, 0xb5
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax + 0xf6]
mov edx, ecx
xor edx, eax
and edx, edi
xor edx, eax
add dl, 0x8e
mov byte [esp + eax + 0xf6], dl
inc eax
dec ecx
cmp eax, 0x52
jne 0x4201f0
movzx eax, byte [esp + 0x140]
test al, al
je 0x42023b
lea ecx, [esp + 0x141]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420230
mov byte [esi], 0
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x108], ecx
cmp eax, ecx
je 0x420c4f
mov dword [esp + 4], 0
lea edi, [esp + 0x30]
jmp 0x4202a7
mov dword [esp], 0
push dword [esp + 0x2c]
call fcn.00404e40
add esp, 4
mov eax, dword [esp + 4]
and al, 1
or al, byte [esp]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x10c]
add eax, 8
cmp eax, dword [esp + 0x108]
je 0x420d61
mov ecx, dword [eax]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x10c], eax
mov eax, dword [eax + 4]
mov dword [esp], eax
push 0x198
push 0
lea eax, [esp + 0x148]
push eax
call fcn.0040cbc0
add esp, 0xc
xor ebx, ebx
jmp 0x4202ee
lea edi, [esp + 0x30]
inc ebx
cmp ebx, 0xb
je 0x4204d0
mov ecx, edi
push 0
push 0
push 0x198
lea eax, [esp + 0x14c]
push eax
push dword [esp + 0x10]
push dword [esp + 0x40]
call fcn.0043f7c0
test eax, eax
js 0x4202e4
cmp byte [esp + 0x210], 0
sete al
xor al, 0x31
cmp byte [esp + 0x211], 0
mov byte [esp + 0xe8], al
sete cl
xor cl, 0x31
mov byte [esp + 0xe9], cl
cmp byte [esp + 0x212], 0
sete cl
xor cl, 0x31
mov byte [esp + 0xea], cl
cmp byte [esp + 0x2d0], 0
sete cl
xor cl, 0x31
mov byte [esp + 0xeb], cl
mov word [esp + 0xec], 0xa
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi + ecx], al
movzx eax, byte [esp + ecx + 0xe9]
inc ecx
test al, al
jne 0x420380
mov byte [esi + ecx], 0
movzx eax, byte [esp + 0x212]
test al, al
jne 0x4204e0
mov edx, dword [esp + 0x184]
or edx, dword [esp + 0x180]
je 0x4204e0
add esi, ecx
mov dword [esp + 0x58], 0x7e5dc8d
mov byte [esp + 0x5c], pe_nt_image_headers32
lea eax, [esp + 0x5d]
mov byte [eax + 4], 0
mov dword [eax], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x3f
xor cl, byte [esp + eax + 0x58]
add cl, 0xc5
mov byte [esp + eax + 0x58], cl
inc eax
cmp eax, 0xa
jne 0x4203e0
movzx eax, byte [esp + 0x58]
test al, al
je 0x42041b
lea ecx, [esp + 0x59]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420410
mov byte [esi], 0
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 8], 0xff676980
mov dword [esp + 0x58], 0xc0c7c6c5
mov word [esp + 0x5c], 0
mov eax, 0xd1
mov ecx, 0x2e
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x79]
lea edi, [edx + edx]
not edi
add edi, edx
or edi, ecx
or edx, eax
and edx, edi
add dl, 0xeb
mov byte [esp + eax - 0x79], dl
inc eax
dec ecx
cmp eax, 0xd7
jne 0x420450
mov eax, dword [0x452164]
test eax, eax
je 0x4202e0
mov ecx, dword [esp + 0x58]
xor edx, edx
mov edi, dword [0x452168]
nop
nop
nop
nop
nop
cmp dword [edi + edx*8], 0xf8fd61b8
je 0x4204a3
inc edx
cmp eax, edx
jne 0x420490
jmp 0x4202e0
mov eax, dword [edi + edx*8 + 4]
cmp eax, ecx
je 0x4202e0
lea ecx, [esp + 8]
push ecx
push 0
push 2
push dword [0x45216c]
push eax
call fcn.00442160
add esp, 0x14
jmp 0x4202e0
movzx eax, byte [esp + 0x212]
jmp 0x4204e2
add esi, ecx
test al, al
mov ebx, 0
je 0x420290
call fcn.00405000
mov dword [esp + 0x2c], eax
push eax
call fcn.004049c0
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x58], 0x61cbc7c1
mov byte [esp + 0x5c], 0x74
mov dword [esp + 0x5d], 0
mov eax, 0x3d737c16
nop
nop
movzx ecx, byte [esp + eax - 0x3d737bbe]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x92
mov byte [esp + eax - 0x3d737bbe], cl
inc eax
cmp eax, 0x3d737c1f
jne 0x420520
movzx eax, byte [esp + 0x58]
test al, al
je 0x42056b
lea ecx, [esp + 0x59]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x420560
mov byte [esi], 0
mov eax, dword [esp + 0x178]
mov edx, dword [esp + 0x17c]
xor ebx, ebx
mov ecx, eax
or ecx, edx
je 0x4205b0
mov ecx, edi
push 0
push 0
push 0x40
lea edi, [esp + 0x64]
push edi
push edx
push eax
call fcn.0043f7c0
test eax, eax
js 0x4205b4
lea ecx, [esp + 0x30]
mov edx, edi
push dword [esp]
call fcn.004228d0
add esp, 4
jmp 0x4205b6
xor eax, eax
jmp 0x4205ba
xor eax, eax
lea edi, [esp + 0x30]
mov dword [esp + 0x58], 0x27b8c0cb
mov byte [esp + 0x5c], 0x28
lea ecx, [esp + 0x5d]
mov byte [ecx + 4], 0
mov dword [ecx], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, ebx
add cl, 0x77
xor cl, byte [esp + ebx + 0x58]
add cl, 0xad
mov byte [esp + ebx + 0x58], cl
inc ebx
cmp ebx, 0xa
jne 0x4205e0
movzx ecx, byte [esp + 0x58]
test cl, cl
je 0x420620
lea edx, [esp + 0x59]
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], cl
inc esi
movzx ecx, byte [edx]
inc edx
test cl, cl
jne 0x420610
jmp 0x420622
xor ebx, ebx
mov byte [esi], 0
test al, al
je 0x420270
push dword [esp]
call fcn.00404e00
add esp, 4
test eax, eax
je 0x4207b6
mov eax, dword [esp + 0x298]
mov edx, dword [esp + 0x29c]
add eax, 0x28
adc edx, 0
mov ecx, edi
push 0
push 0
push 8
lea ebx, [esp + 0x124]
push ebx
push edx
push eax
call fcn.0043f7c0
test eax, eax
mov ecx, edi
lea edi, [esp + 0x58]
js 0x42087c
mov eax, dword [esp + 0x118]
mov edx, dword [esp + 0x11c]
add eax, 0x10
adc edx, 0
mov edi, ecx
push 0
push 0
push 8
lea ebx, [esp + 0x11c]
push ebx
push edx
push eax
call fcn.0043f7c0
mov ecx, edi
lea edi, [esp + 0x58]
test eax, eax
js 0x42087c
mov eax, dword [esp + 0x110]
mov edx, dword [esp + 0x114]
add eax, 0x10
adc edx, 0
push 0
push 0
push 0x18
lea edi, [esp + 0xf4]
push edi
push edx
push eax
call fcn.0043f7c0
test eax, eax
js 0x420816
cmp byte [esp + 0xff], 0
lea edi, [esp + 0xe8]
js 0x4207c0
mov dword [esp + 8], 0x37b93955
mov dword [esp + 0xc], 0x33bc3549
mov dword [esp + 0x10], 0x4f123110
mov dword [esp + 0x14], 0x4bc64d2d
mov dword [esp + 0x18], 0x47224929
mov word [esp + 0x1c], 0x4544
lea eax, [esp + 0x1e]
mov byte [eax + 4], 0
mov dword [eax], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xb6
xor cl, byte [esp + eax + 8]
add cl, 0x72
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 0x1b
jne 0x420740
movzx ebx, word [esp + 8]
test bx, bx
mov dword [esp + 0x104], edi
je 0x42081c
lea eax, [esp + 8]
mov edx, edi
mov dword [esp], edi
jmp 0x42078c
movzx ebx, word [eax]
test bx, bx
je 0x420820
movzx edi, word [edx]
test di, di
je 0x420857
add edx, 2
add eax, 2
mov ecx, dword [esp]
add ecx, 2
cmp di, bx
je 0x4207ae
mov dword [esp], ecx
mov edx, ecx
je 0x420780
lea eax, [esp + 8]
jmp 0x420780
mov al, 1
mov dword [esp], eax
jmp 0x420277
mov ebx, dword [esp + 0xe8]
mov edi, dword [esp + 0xec]
mov eax, ebx
or eax, edi
je 0x420816
mov eax, dword [esp + 0xf0]
lea ecx, [eax*2 + 2]
inc eax
mov dword [esp], ecx
mov eax, ecx
jns 0x4207ef
mov eax, 0xffffffff
push eax
call fcn.0040cb10
add esp, 4
lea ecx, [esp + 0x30]
push 0
push 0
push dword [esp + 8]
push eax
push edi
mov edi, eax
push ebx
call fcn.0043f7c0
test eax, eax
jns 0x4206f8
lea edi, [esp + 0x58]
jmp 0x42087c
mov eax, edi
jmp 0x42082b
lea ebx, [esp + 0x58]
mov eax, dword [esp]
test eax, eax
je 0x42085b
movzx edi, word [eax + 0x14]
lea ebx, [esp + 0x58]
test di, di
je 0x42085b
lea edx, [eax + 0x14]
xor ecx, ecx
nop
nop
nop
cmp di, 0x5c
je 0x420b89
movzx edi, word [eax + ecx + 0x16]
add ecx, 2
test di, di
jne 0x420840
lea ebx, [esp + 0x58]
cmp byte [esp + 0xff], 0
jns 0x420874
push dword [esp + 0x104]
call fcn.0040cb20
add esp, 4
lea edi, [esp + 0x58]
cmp edi, ebx
jne 0x4208f6
mov dword [esp + 8], 0x37443961
mov dword [esp + 0xc], 0x3341354b
mov dword [esp + 0x10], 0x4f3c314b
mov dword [esp + 0x14], 0x4bc64d35
mov dword [esp + 0x18], 0x4746493b
mov byte [esp + 0x1c], 0
xor eax, eax
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x36
xor cl, byte [esp + eax + 8]
add cl, 0xf2
mov byte [esp + eax + 8], cl
inc eax
cmp eax, 0x15
jne 0x4208b0
movzx eax, word [esp + 8]
mov ebx, edi
test ax, ax
je 0x4208f1
lea ecx, [esp + 0xa]
mov ebx, edi
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4208e0
mov word [ebx], 0
mov edx, ebx
sub edx, edi
mov ecx, edx
shr ecx, 2
mov eax, edi
mov edi, esi
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
mov eax, edx
and eax, 0xfffffffc
lea edi, [esi + eax]
add eax, esp
add eax, 0x58
mov ecx, edx
shr ecx, 1
and ecx, 1
mov dword [esp + 0x28], eax
mov dword [esp], edi
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
test bl, 1
je 0x42093f
mov eax, edx
and eax, 2
mov ecx, dword [esp + 0x28]
movzx ecx, byte [ecx + eax]
mov edi, dword [esp]
mov byte [edi + eax], cl
mov dword [esp + 8], 0xe5edeb46
mov word [esp + 0xc], 0x535a
lea eax, [esp + 0x1e]
mov byte [eax - 0xe], 0
mov word [eax - 0x10], 0
mov eax, 0x934eb26d
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x6cb14d9b]
lea ebx, [ecx + ecx]
not ebx
add ebx, ecx
mov edi, eax
or edi, ecx
not ecx
and ecx, ebx
lea ebx, [ecx + ecx]
not ebx
add ebx, ecx
and ebx, eax
xor ebx, edi
mov ecx, ebx
and ecx, 0x5e
xor ebx, 0xde
lea ecx, [ebx + ecx*2]
inc cl
mov byte [esp + eax + 0x6cb14d9b], cl
inc eax
cmp eax, 0x934eb276
jne 0x420970
add esi, edx
movzx eax, byte [esp + 8]
test al, al
je 0x4209cb
lea ecx, [esp + 9]
mov byte [esi], al
inc esi
movzx eax, byte [ecx]
inc ecx
test al, al
jne 0x4209c0
mov byte [esi], 0
mov eax, dword [ebp + 0x14]
mov edi, dword [eax]
mov eax, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [edi + eax + 2], 0
lea eax, [eax + 2]
jne 0x4209e0
sar eax, 1
sar edx, 1
lea ecx, [edx + eax]
add ecx, 0xa
test ecx, ecx
jns 0x420a00
mov eax, 0xffffffff
jmp 0x420a09
add edx, eax
lea eax, [edx*2 + 0x14]
push eax
call fcn.0040cb10
add esp, 4
movzx ecx, word [edi]
mov edx, eax
test cx, cx
je 0x420a41
add edi, 2
mov edx, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [edx], cx
add edx, 2
movzx ecx, word [edi]
add edi, 2
test cx, cx
jne 0x420a30
mov dword [esp + 0x28], eax
mov dword [esp], edx
mov word [edx], 0x2f
mov dword [esp + 8], 0xf1a0ff8d
mov dword [esp + 0xc], 0xf57bf357
mov dword [esp + 0x10], 0xc942f78a
mov dword [esp + 0x14], 0xcd7ecb40
mov word [esp + 0x18], 0xcfcc
lea eax, [esp + 0x1e]
mov byte [eax], 0
mov dword [eax - 4], 0
mov ecx, 0xd9250cd5
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x26daf333]
xor edx, ecx
mov edi, edx
and edi, 0xd4
mov eax, edx
and eax, 2
mov ebx, eax
xor ebx, 2
imul ebx, edi
or edi, 2
imul edi, eax
xor edx, 0xd6
add edx, ebx
add edx, edi
inc dl
mov byte [esp + ecx + 0x26daf333], dl
inc ecx
cmp ecx, 0xd9250cec
jne 0x420a90
mov eax, dword [esp]
add eax, 2
movzx ecx, word [esp + 0x58]
test cx, cx
je 0x420b01
lea edx, [esp + 0x5a]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x420af0
mov word [eax], 0
movzx ecx, word [esp + 8]
test cx, cx
je 0x420b31
lea edx, [esp + 0xa]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x420b20
mov word [eax], 0
mov ebx, 0xffffffff
push dword [esp + 0x2c]
call fcn.00405bb0
add esp, 4
mov edi, eax
nop
nop
nop
nop
nop
nop
nop
cmp byte [edi + ebx + 1], 0
lea ebx, [ebx + 1]
jne 0x420b50
mov ecx, dword [ebp + 8]
push ebx
push edi
mov ebx, dword [esp + 0x30]
push ebx
call fcn.0040d4c0
mov dword [esp], eax
push edi
call fcn.00405c40
add esp, 4
push ebx
call fcn.0040cb20
add esp, 4
xor ebx, ebx
lea edi, [esp + 0x30]
jmp 0x420277
lea eax, [esp + 0x58]
mov ebx, eax
test ecx, ecx
je 0x420c37
sar ecx, 1
mov edi, ecx
mov ebx, eax
and edi, 3
je 0x420bdd
mov dword [esp + 0x28], edi
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, word [edx]
mov word [esp], ax
xor eax, eax
cmp word [esp], 0
setne al
lea edx, [edx + eax*2]
movzx eax, word [esp]
mov word [ebx], ax
add ebx, 2
inc edi
cmp dword [esp + 0x28], edi
jne 0x420bb0
mov eax, ecx
sub eax, edi
mov edi, eax
jmp 0x420bdf
mov edi, ecx
dec ecx
cmp ecx, 3
jb 0x420c37
movzx eax, word [edx]
xor ecx, ecx
test ax, ax
setne cl
mov word [ebx], ax
lea eax, [edx + ecx*2]
movzx ecx, word [edx + ecx*2]
xor edx, edx
test cx, cx
setne dl
mov word [ebx + 2], cx
lea ecx, [eax + edx*2]
movzx eax, word [eax + edx*2]
xor edx, edx
test ax, ax
setne dl
mov word [ebx + 4], ax
lea eax, [ecx + edx*2]
movzx ecx, word [ecx + edx*2]
xor edx, edx
test cx, cx
setne dl
lea edx, [eax + edx*2]
mov word [ebx + 6], cx
add ebx, 8
add edi, 0xfffffffc
jne 0x420be5
mov word [ebx], 0
cmp byte [esp + 0xff], 0
jns 0x420874
jmp 0x420865
mov dword [esp + 4], 0
lea ecx, [esp + 0x30]
call fcn.0043ee80
mov dword [esp + 0x140], 0x3f464357
mov byte [esp + 0x144], 0xc8
mov word [esp + 0x145], 0
mov byte [esp + 0x147], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ebx + 0x140]
mov edi, ebx
and edi, 3
mov edx, ebx
and edx, 4
xor edx, 0x1b5e8fcc
mov ecx, ebx
or ecx, 0x24a17033
add ecx, edi
sub edx, edi
and edx, 0x12548007
and ecx, 0x24805028
or ecx, edx
mov edx, eax
and edx, 0x17
or edx, 0x47ebbd40
and eax, 0xffffffe8
xor eax, edx
mov edx, eax
xor edx, 0x14941007
xor eax, 0xc8212288
or eax, ecx
not ecx
or ecx, edx
and eax, ecx
mov ecx, 0xff
sub ecx, eax
mov edi, 2
sub edi, eax
sub edi, eax
and edi, 2
and eax, 1
and ecx, 0xfe
or ecx, eax
add ecx, edi
mov byte [esp + ebx + 0x140], cl
inc ebx
cmp ebx, 8
jne 0x420c90
movzx ebx, byte [esp + 0x140]
test bl, bl
je 0x420d4d
lea ecx, [esp + 0x141]
mov edx, dword [ebp + 0xc]
mov eax, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov byte [esi], bl
inc esi
movzx ebx, byte [ecx]
inc ecx
test bl, bl
jne 0x420d40
jmp 0x420d54
mov edx, dword [ebp + 0xc]
mov eax, dword [esp + 4]
mov byte [esi], 0
mov dword [edx], esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 4]
and cl, 1
mov dword [esp + 4], ecx
test eax, eax
je 0x420c57
cmp eax, dword [esp + 0x48]
je 0x420c57
push eax
call fcn.0040cb20
add esp, 4
mov dword [esp + 0x44], 0
jmp 0x420c57